为什么JavaScript和PHP时间戳之间存在差异

时间:2011-04-07 07:56:21

标签: javascript php date timestamp

我创建了一个JavaScript时间戳和一个PHP时间戳。它们之间有大约170秒的差异。

  • 1302162686 PHP - time()
  • 1302162517 JavaScript - Math.round(new Date().getTime() / 1000)

有谁能告诉我为什么我遇到这个问题?

6 个答案:

答案 0 :(得分:14)

PHP在服务器端执行,在您的示例中,JavaScript在客户端工作。

双方都有自己的时间配置。对于服务器,时区设置等将保持不变(除非您更改它们),但服务器不知道当前访问者所在的时区。您无法控制它。

如果我在笔记本电脑上更改系统时钟,它将影响客户端JavaScript日期/时间,但服务器计时器不会受到影响。

答案 1 :(得分:2)

PHP和JavaScript,都看系统时间。谁的系统?他们正在运行的那个。服务器可能位于另一个国家,时间不同,因此存在差异。

此外,客户端(或不常用的服务器)时钟可能不正确。

我经常用来解决这个问题的一种方法是:

var referenceTime = new Date('<?php echo date("M n, Y"); ?>');
// referenceTime is now the same as server time

答案 2 :(得分:1)

PHP查看系统时间,即运行它的服务器。

JavaScript查看客户端的系统,这可能是任何时候。

答案 3 :(得分:1)

php使用服务器上的时间,javascript将使用客户端(用户)机器上的时间。

答案 4 :(得分:1)

Mathias是对的。一般情况下,这不应该发生这么大的差异,因为现代计算机会识别它们的时钟随时间漂移并使用NTP等协议来保持它们的时钟同步。

尽管如此,你永远不应该假设客户端和服务器上的时间是相同的,原因有两个:

  • 某些客户端/服务器没有时钟调整(例如NTP),并且它们的时钟随着时间的推移而逐渐消失
  • 更重要的是,许多用户/管理员在设置时区或调整夏令时方面可能是无能为力或迟到的,因此给予您的时间可能精确到一秒,但可能需要几个小时。

比较/计算时间时,我只依靠服务器。你无法控制客户。

答案 5 :(得分:0)

如果您担心出于任何目的的一致性,我建议您使用服务器作为时间源,并在必要时进行时区转换:

这可能是有意义的:handling timezone conversion with php