Unix 纪元时间使用 PHP 错误地转换为人类可读
Posted
技术标签:
【中文标题】Unix 纪元时间使用 PHP 错误地转换为人类可读【英文标题】:Unix epoch time converts to human readable incorrectly with PHP 【发布时间】:2021-10-30 10:25:56 【问题描述】:1630440104
是 Unix 纪元时间代码示例。
这个 php 代码
echo date('Y.m.d', '1630440104').' at '.date('H:m:s', '1630440104');
输出为2021.08.31 at 23:08:44
,这是不正确的。
因为正确的输出应该是2021.08.31 at 23:01:44
。
无论我在上述 PHP 代码中插入什么时间代码,它都会返回 08 分钟而不是实际值。
我哪里做错了?
【问题讨论】:
顺便说一句,如果您对它进行转义,您可以在格式字符串中包含“at”,因此您只需调用一次date()
。 echo date('Y.m.d \a\t H:i:s', '1630440104');
@Sammitch 只是因为它应该在这种特殊情况下。将任何在线纪元转换器与我的时间码一起使用。时间戳可以是更少或更多的任何分钟。仅当实际分钟数为 8 时才正确。因为正如我在问题中所述,它始终显示 8 分钟。
@dontpanic 谢谢
【参考方案1】:
错误是在第二个date
调用中使用了m
。 m
是月份,分钟是 i
。
echo date('Y.m.d', 1630440104).' at '.date('H:i:s', 1630440104);
或
echo date('Y.m.d \a\t H:i:s', 1630440104);
顺便说一句,date
第二个参数接受 int
而不是 string
在 declare(strict_types=1);
中会发生 TypeError。
您可以在DateTime::format
docs page 下找到可用的格式。
【讨论】:
我应该自己检测到我的错误,因为日期部分已经有m
。非常感谢!
不,有问题。它发生了。以上是关于Unix 纪元时间使用 PHP 错误地转换为人类可读的主要内容,如果未能解决你的问题,请参考以下文章