我得到的结果我并不期望来自gmdate()
<?php
$secs = 175707;
echo gmdate("H:i:s", $secs); // result: 00:48:27
?>
结果是 00:48:27 ,这是关闭的。似乎时间被推到了一个位置。我怀疑是吗?
答案 0 :(得分:2)
gmdate适用于日期,而不是时间段。换句话说,您的时间戳被解释为1970年1月3日早些时候的一个时间点(具体是1970年1月1日00:00:00 + 1970年1月3日15707秒= 00:48:27)。这是00:48:27来自的地方。
gmdate
(和date
)并不意味着以这种方式使用。如果您只想根据秒数计算小时/分钟/秒,请直接计算:
$seconds = 175707;
$hours = floor($seconds / 3600);
$seconds -= $hours * 3600;
$minutes = floor($seconds / 60);
$seconds -= $minutes * 60;
echo "$hours:$minutes:$seconds"; //48:48:27
请注意,这不适用于民用日。这是因为夏令时。一天不总是24小时。有时它是23,有时它是25当DST生效或结束时。以天为单位(即一天总是24小时),这确实有效。例如,3月10日是23小时,11月3日是25小时在美国。如果你对静态的24小时工作日感到满意,那么同样的方法当然会有效。
答案 1 :(得分:0)
gmdate()需要UNIX时间戳 - 自1970年1月1日以来的秒数。您已通过相应的Saturday, Jan 3rd, 1970, 12:48:27am
。
e.g。试试这个:
echo gmdate('r', 175707);
答案 2 :(得分:0)
答案 3 :(得分:0)
如果你想看看哪里出错,请看看这个:
echo date("d-M-Y H:i:s", 175707);
这将产生03-Jan-1970 00:48:27
的输出。即1970年1月1日00:00:00后175707 seconds = 03-Jan-1970 00:48:27
。