-1

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

  • 服务器一,取自 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”

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

4

3 回答 3

0

php 在与解析 JavaScript 的机器不同的服务器中执行吗?
无论哪种方式,如果您可以使用gmt时间,则有一种解决方法:

在您的 PHP 脚本中使用gmdate 。
使用 dts。JS 中的getUTCHours()(以及其余的类似函数,以 UTC 为前缀)。检查ECMAScript 标准 p。174 . 更多细节。

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

于 2013-05-29T16:53:39.720 回答
0

时间戳将是 UTC ......但是一旦你把它放入 PHP 日期对象,它就会有服务器的时区。将其放入 JavaScript 后,它将具有计算机的本地时区。要在 PHP 中设置服务器的时区,您可以使用它(将时区替换为您的时区)并查看是否可以为您修复它:

date_default_timezone_set('America/Chicago')

显然,要更改 JavaScript 的时区,需要更改计算机的时区。

于 2013-05-29T16:47:17.833 回答
0

您和您的服务器可能不在同一个 timezome。

尝试使用 javascript:

    var hours_s = dts.getUTCHours();
    var minutes_s = dts.getUTCMinutes();
    var seconds_s = dts.getUTCSeconds();
于 2013-05-29T16:47:19.647 回答