为什么JavaScript和PHP时间戳之间存在差异
我创建了一个JavaScript时间戳和一个PHP时间戳。它们之间相差约170秒为什么JavaScript和PHP时间戳之间存在差异,javascript,php,date,timestamp,Javascript,Php,Date,Timestamp,我创建了一个JavaScript时间戳和一个PHP时间戳。它们之间相差约170秒 1302162686 PHP-time() 1302162517 JavaScript-Math.round(new Date().getTime()/1000) 有人能告诉我为什么会出现这个问题吗?PHP在服务器端执行,在您的示例中,JavaScript在客户端工作 双方都有自己的时间配置。对于服务器,时区设置等将保持不变(除非您更改),但服务器不知道当前访问者所在的时区。你没办法控制它 如果我更改笔记本电脑
- 1302162686 PHP-
time()
- 1302162517 JavaScript-
Math.round(new Date().getTime()/1000)
有人能告诉我为什么会出现这个问题吗?PHP在服务器端执行,在您的示例中,JavaScript在客户端工作 双方都有自己的时间配置。对于服务器,时区设置等将保持不变(除非您更改),但服务器不知道当前访问者所在的时区。你没办法控制它
如果我更改笔记本电脑上的系统时钟,它将影响客户端JavaScript日期/时间,但不会影响服务器计时器。PHP查看系统时间,即运行它的服务器
JavaScript查看客户端的系统,可以是任何时间。php使用服务器上的时间,JavaScript将使用客户端(用户)机器上的时间。Mathias是正确的。一般来说,这种情况不应该发生在如此大的差异上,因为现代计算机能够识别时钟随时间的推移而漂移,并采用诸如保持时钟同步之类的协议 然而,由于两个原因,您不应假设客户端和服务器的时间相同:
- 一些客户端/服务器没有时钟调整(如NTP),它们的时钟会随着时间推移而漂移
- 更重要的是,许多用户/管理员在设置时区或调整夏令时时时可能会不知所措或迟到,因此给您的时间可能精确到一秒,但可能需要几个小时
在比较/计算时间时,我只依赖服务器。您无法控制客户端。PHP和JavaScript都查看系统时间。谁的系统?他们正在运行的那个。服务器可能位于另一个时间不同的国家/地区,因此存在差异 此外,客户机(或服务器)的时钟可能不正确 我经常用来解决这个问题的一种方法是:
var referenceTime = new Date('<?php echo date("M n, Y"); ?>');
// referenceTime is now the same as server time
var referenceTime=新日期(“”);
//referenceTime现在与服务器时间相同
如果出于任何目的担心一致性,我建议使用服务器作为时间源,并在必要时进行时区转换:
这可能很有趣:服务器和客户端是否设置了相同的时间?答案很好。最后一段怎么强调都不够。对不起,我的错,我当时完全疯了。谢谢你的帮助。