首页 > 解决方案 > 在 PHP 中确保 Unix 时间

问题描述

我的代码假设零代表 Unix 纪元的开始,即 1970-01-01 00:00。我升级了 PHP 的安装,现在突然间,零代表 1970-01-01 01:00(用 验证date('Y-m-d H:i', 0))。所以显然有一个时区问题。我将相同的代码放入沙箱并得到 1969-12-31 16:00。我有几个单元测试因此而被破坏。时区不会也不应该在这里发挥作用。

date()无论特定安装上的时区设置如何,如何确保日期时间功能(例如始终将零转换为 1970-01-01 00:00)?

标签: phpunix-timestamp

解决方案


使用gmdate()你总是会得到1970-01-01 00:00for 0,无论你的服务器在哪个时区:

<?php
date_default_timezone_set('Europe/Berlin');

echo "Europe/Berlin:\n";
echo "gmdate: ".gmdate('d.m.y H:i', 0) . "\n";
echo "date: ".date('d.m.y H:i', 0) . "\n";

date_default_timezone_set('America/Los_Angeles');

echo "\nAmerica/Los_Angeles:\n";
echo "gmdate: ".gmdate('d.m.y H:i', 0) . "\n";
echo "date: ".date('d.m.y H:i', 0) . "\n";

/* OUTPUT:
Europe/Berlin:
gmdate: 01.01.70 00:00
date: 01.01.70 01:00

America/Los_Angeles:
gmdate: 01.01.70 00:00
date: 31.12.69 16:00
*/

https://3v4l.org/FechC


推荐阅读