一个带有多个格式输出的时间戳

时间:2013-05-29 16:33:33

标签: php javascript unix-timestamp

我想在我的页面上显示两个日期/时间

  • 服务器一,取自MySQL服务器
  • 客户端一,取自JavaScript

由于输出不正确,我开始挖掘我的代码并发现一些奇怪的东西:我在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”

有谁知道为什么会这样?有没有人知道解决方法?

3 个答案:

答案 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 。了解更多详情。

如果您想使用本地时间,请查看服务器和客户端计算机的区域设置配置。