在服务器上转换时间戳会在 PHP 和 MySQL 中给出不同的结果



考虑一下。在我的服务器上,我像这样转换(UTC/GMT)时间串:

strtotime('Fri Feb 18 21:08:38 +0000 2011')

我的服务器返回

1298063318

这是正确的,因为我测试的所有 unix 时间戳转换器都返回相同的内容。反之亦然,如果我插入的不是日期而是时间戳,我会返回上面给出的时间字符串。但是,如果我转换服务器上的时间戳:

date("Y-m-d H:i:s", 1298063318); 

我得到的日期与预期不同(是"星期五 2 月 18 日 21:08:38 +0000 2011"):

2011-02-18 22:08:38

所以它关闭了一个小时。这可能是因为我的服务器时区设置为欧洲/巴黎,因此它将时间戳转换为 UTC/GTM + 1。但是MySQL在同一台服务器上运行并具有相同的时区,给了我另一个结果:

SELECT FROM_UNIXTIME(1298063318) = 2011-02-18 22:08:15

换句话说,它关闭了 18 秒。有人可以解释为什么吗?

对于MySQL,闰秒校正用于日期函数(MySQL文档)。对于 PHP 日期函数,不考虑闰秒。出于这个原因,你现在得到 24 秒的差异。

您可以尝试以下方法来解决您的问题:http://pumka.net/2010/10/24/why-mysql-timestamp-is-24-seconds-different-from-php/

诗篇 38 - 15 = 23

相关内容

  • 没有找到相关文章

最新更新