我想在我的页面上显示两个日期/时间
由于输出不正确,我开始挖掘我的代码并发现一些奇怪的东西:我在php和javascript中格式化了相同的时间戳(参见下面的代码),结果相差3小时。
时间戳:1369855189
PHP:
var_dump( date( 'H:i:s', $timestamp ) );
输出:“19:19:49”
JavaScript的:
dts = new Date( timestamp * 1000 );
var hours_s = dts.getHours();
var minutes_s = dts.getMinutes();
var seconds_s = dts.getSeconds();
current_server_time = hours_s + ":" + minutes_s + ":" + seconds_s";
输出:“22:19:49”
有谁知道为什么会这样?有没有人知道解决方法?
答案 0 :(得分:0)
时间戳将是UTC ...但是一旦将其放入PHP日期对象,它将具有服务器的时区。一旦你把它放入JavaScript,它将拥有计算机的本地时区。要在PHP中设置服务器的时区,您可以使用它(用您的时区替换时区),看看是否能为您修复它:
date_default_timezone_set('America/Chicago')
显然,要更改JavaScript的时区,需要更改计算机的时区。
答案 1 :(得分:0)
您和您的服务器可能不在同一时间。
尝试使用javascript:
var hours_s = dts.getUTCHours();
var minutes_s = dts.getUTCMinutes();
var seconds_s = dts.getUTCSeconds();
答案 2 :(得分:0)
php是否在与解析JavaScript的机器不同的服务器中执行? 无论哪种方式,如果您可以使用 gmt 时间:
,有一种解决方法在PHP脚本中使用 gmdate 在JS中使用dts。 getUTCHours()(以及其余的类似函数,前缀为UTC)。查看ECMAScript standard p。 174 。了解更多详情。
如果您想使用本地时间,请查看服务器和客户端计算机的区域设置配置。