【问题标题】:Convert PHP Unix Timestamp to Javascript Timestamp format将 PHP Unix 时间戳转换为 Javascript 时间戳格式
【发布时间】:2015-09-08 16:16:23
【问题描述】:

我将一个 unix 时间戳从我的 php 扔到我的 javascript 中,我注意到 PHP 和 Javascript 时间戳与纪元不同(秒与毫秒)。

我基本上做的是回显 php unixtime 然后添加 3 个零(简单地将其乘以 1000)但我注意到当我检查它时,它显示时间大约 4-8 小时.

我正在使用 canvas.js,我需要使用 unix 时间戳对其进行转换

例如:

1434183780

2015 年 6 月 13 日上午 8:23

我加了三个零

1434183780000

echo "{ x:".$chartData[$loop]['time']."000 , y:1 }";

时间变成了:

2015 年 6 月 13 日下午 16:23

一切正常,只是时间完全扭曲了。

一旦我把它放在javascript上,我怎样才能让它在不改变时间的情况下工作?我更喜欢将它保存在 unixtime 中,因为当我用它做其他事情时,我仍然以这种格式使用它。

【问题讨论】:

  • 时间戳是 UTC,可能是本地时间妨碍了?
  • 您指的是 PHP 端还是 Javascript 端?我检查了 PHP 端,它得到了正确的数据。
  • 我说的是客户端。

标签: javascript php unix timestamp


【解决方案1】:

这听起来像是时区问题。

Unix timestamp 始终是UTC 中的一个时间点。

当以“2015 年 6 月 13 日上午 8:23”之类的格式显示时,您始终使用特定时区来显示它。时间显示为“16:23PM”的原因是因为使用了不同于您预期的时区来显示 Unix 时间戳。

因此,解决方案就是确保在显示时间戳时选择正确的时区。

如果您正在使用 JavaScript Date 对象并且您的意思是使用 UTC,您可以尝试使用类似 toUTCString() 的方法:

console.log(new Date(1434183780000).toUTCString());
// Output: Sat, 13 Jun 2015 08:23:00 GMT

Date 仅支持本地时区或 UTC。如果你想构建自己的UTC格式字符串,可以使用Date中以getUTC*()开头的方法,如getUTCHours()getUTCDate()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date 中查看有关Date 对象的更多信息

【讨论】:

  • 另外值得注意的是 JS 时间是以微秒为单位的,所以它是一个 unix 时间戳乘以 1000
  • 更正确的说法是Date 对象的时间戳以毫秒为单位。 JavaScript 语言并不关心这一点。据我所知,Date 没有使用比 毫秒 更精确的值。我知道微秒精度在 Performance.now() 方法中用作浮点数,这是高分辨率时间规范的一部分(请参阅developer.mozilla.org/en-US/docs/Web/API/Performance)。
  • 是的,当然是毫秒……我总是把两个倒过来! >.
猜你喜欢
  • 2016-04-03
  • 1970-01-01
  • 2014-10-26
  • 2013-04-07
  • 2018-08-03
  • 2017-03-30
  • 2020-10-19
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多