Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么JavaScript和PHP时间戳之间存在差异_Javascript_Php_Date_Timestamp - Fatal编程技术网

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

为什么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在客户端工作 双方都有自己的时间配置。对于服务器,时区设置等将保持不变(除非您更改),但服务器不知道当前访问者所在的时区。你没办法控制它 如果我更改笔记本电脑

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

  • 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现在与服务器时间相同

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


这可能很有趣:

服务器和客户端是否设置了相同的时间?答案很好。最后一段怎么强调都不够。对不起,我的错,我当时完全疯了。谢谢你的帮助。