我创建了一个JavaScript时间戳和一个PHP时间戳。它们之间有大约170秒的差异。
time()
Math.round(new Date().getTime() / 1000)
有谁能告诉我为什么我遇到这个问题?
答案 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等协议来保持它们的时钟同步。
尽管如此,你永远不应该假设客户端和服务器上的时间是相同的,原因有两个:
比较/计算时间时,我只依靠服务器。你无法控制客户。
答案 5 :(得分:0)
如果您担心出于任何目的的一致性,我建议您使用服务器作为时间源,并在必要时进行时区转换: