我创建了一个JavaScript时间戳和一个PHP时间戳。它们之间大约相差170秒。
- 1302162686 PHP -
time()
- 1302162517 JavaScript -
Math.round(new Date().getTime() / 1000)
请问有人可以告诉我为什么会出现这个问题吗?
我创建了一个JavaScript时间戳和一个PHP时间戳。它们之间大约相差170秒。
time()
Math.round(new Date().getTime() / 1000)
请问有人可以告诉我为什么会出现这个问题吗?
PHP在服务器端执行,而JavaScript在客户端执行。
两者都有自己的时间配置。对于服务器端来说,时区设置等将保持不变(除非你更改它们),但服务器无法知道当前访问者所在的时区。你无法控制这一点。
如果我更改我的笔记本电脑上的系统时钟,它会影响客户端JavaScript的日期/时间,但你的服务器计时器不会受到影响。
PHP和JavaScript都会查看系统时间。这是哪个系统的时间?它们正在运行的系统。服务器可能位于另一个国家,具有不同的时间,因此会有差异。
此外,客户端(或较少情况下,服务器)的时钟可能不正确。
我经常用的一种解决这个问题的方法是:
var referenceTime = new Date('<?php echo date("M n, Y"); ?>');
// referenceTime is now the same as server time
PHP 查看系统时间,即运行它的服务器时间。
JavaScript 查看客户端系统时间,可能是任何时间。
PHP 使用服务器上的时间,而 JavaScript 则使用客户端(用户)机器上的时间。
Mathias 是正确的。通常情况下,由于现代计算机识别其时钟会随时间漂移,并采用协议如NTP 来保持它们的时钟同步,因此不应该出现这么大的差异。
尽管如此,你永远不应该假设客户端和服务器的时间是相同的,原因有两个:
在比较/计算时间时,我会只依靠服务器。你无法控制客户端。