【问题标题】:One timestamp with multiple formatting outputs一个带有多个格式输出的时间戳
【发布时间】:2013-05-29 16:33:32
【问题描述】:

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

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

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

【问题讨论】:

  • 很抱歉问题的外观,我尝试按照建议对其进行格式化,但显然失败了:(
  • 看起来不同的时区-
  • JS 解析本地时区的所有日期,除非在日期序列化中提供了此类时区信息。

标签: php javascript unix-timestamp


【解决方案1】:

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

用javascript试试:

    var hours_s = dts.getUTCHours();
    var minutes_s = dts.getUTCMinutes();
    var seconds_s = dts.getUTCSeconds();

【讨论】:

  • 我实际上是在本地工作,即我的电脑是服务器。尽管如此,它还是奏效了。谢谢,你是一个救生员:)
【解决方案2】:

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

date_default_timezone_set('America/Chicago')

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

【讨论】:

    【解决方案3】:

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

    在您的 PHP 脚本中使用 gmdate
    在您的 JS 中使用 dts.getUTCHours() (其余的类似函数,以 UTC 为前缀)。检查ECMAScript standard p。 174。了解更多详情。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2020-09-25
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多