php - 在 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)?
解决方案
使用gmdate()你总是会得到1970-01-01 00:00
for 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
*/
推荐阅读
- python - 在 django admin 中设置初始(默认)实例
- python-3.x - 使用 django shell 保存图像 URL
- python - Python Panda 数据框,给出 2 列返回 true 的数量
- c# - 自动更新在 IIS 管理器上运行的本地客户端网站
- html - django web应用程序中周期性页面刷新对服务器的影响
- reactjs - 如何在 react-select 中定义选项的最大限制?
- c# - EF Core ASP.Net Core 编辑迁移
- openssl - 有什么办法可以避免 pro*c 预编译器?
- android - 如何使用 exoplayer 播放字节数组?
- java - 垃圾收集器不会自行释放内存