Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php unix时间戳中的javascript日期_Javascript_Php_Unix_Datetime - Fatal编程技术网

php unix时间戳中的javascript日期

php unix时间戳中的javascript日期,javascript,php,unix,datetime,Javascript,Php,Unix,Datetime,在数据库中,我有一行带有日期和时间,比如说2014-04-16 00:00:00,然后我使用 strtotime('2014-04-16 00:00:00') * 1000; // result 1397577600000 在javascript中,我尝试使用以下代码获取小时数 var d = new Date(1397577600000); // 1397577600000 from php unix timestamp in previous code d.getHours(); // r

在数据库中,我有一行带有日期和时间,比如说
2014-04-16 00:00:00
,然后我使用

strtotime('2014-04-16 00:00:00') * 1000; // result 1397577600000
在javascript中,我尝试使用以下代码获取小时数

var d = new Date(1397577600000); // 1397577600000 from php unix timestamp in previous code
d.getHours(); // return 23
d.getMinutes(); // return 0

为什么
getHours()
返回23而不是0?js时间戳和php时间戳有什么区别吗?

我在这里得到
21
,因为在Javascript中,用户的本地时区将被视为获取时间和日期。

好的,根据Arun p Johnny所说

我更改
strotime
参数以匹配我的时区,在本例中,我将其更改为

strtotime('2014-04-16 00:00:00 GMT+7') * 1000;

希望这能帮助任何与我有相同问题的人。javascript中的日期对象将始终返回基于浏览器当前时区的值。因此,如果
d.getHours()
为您返回23,则表明您的本地浏览器时区比UTC(-01:00)早一小时

如果需要基于UTC时区的
日期
对象的小时数,可以使用:

d.getUTCHours()
跟进: 为了提供一些免费建议,您可以使用以下代码处理从一个上下文到另一个上下文的日期值:

PHP: Javascript:
这将使datetime变量在使用该语言处理时保持特定于该语言的对象格式,并将值序列化为所有当前浏览器/语言都接受的字符串格式(国际标准ISO-8601)。

因为客户端使用本地时区K,如何克服这个问题?与其发送时间戳值,不如发送一个格式化字符串作为日期值,如
2014-04-16 00:00:00
调用
new date('2014-04-16 00:00:00')
我不能这样做,jQuery flot使用的unix时间戳。jQuery flot显示不同的时间(小时),如上所述。您还可以计算偏移量以匹配服务器时区。如果用户的系统中设置了不同的timzezone,则此方法将再次失败。。。我明白了,试着改变你系统的时区,试试银行。但是不用担心,这是内部使用的我想在你的区域没有。。。
// Fetched from the db somehow
$datetime_db = '2014-04-16 00:00:00';

// Convert to PHP DateTime object:
$datetime_obj = new DateTime($datetime_db, new DateTimeZone('UTC'));

// Format DateTime object to javascript-friendly ISO-8601 format:
$datetime_iso = $datetime_obj->format(DateTime::W3C);
var d = new Date('2014-04-16T00:00:00+00:00'); // 2014-04-16T00:00:00+00:00 from PHP in previous code
d.getUTCHours(); // returns 0