我从gmdate()
得到了一个我没有预料到的结果
<?php
$secs = 175707;
echo gmdate("H:i:s", $secs); // result: 00:48:27
?>
结果是00:48:27,这太离谱了。时间似乎被推低了一个位置。我怀疑这是对的吗?
gmdate适用于日期,而不是时间段。换句话说,您的时间戳被解释为1970年1月3日早期的一个时间点(具体为1970年01月1日00:00:00+15707秒=00:48:271970年01月3日)。这就是你00:48:27的由来。
CCD_ 2(和CCD_。如果你只想根据秒数计算小时/分钟/秒,可以直接计算:
$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。以天为计量单位(即一天总是24小时),这确实有效。例如,在美国,3月10日是23小时,11月3日是25小时。如果你对每天24小时的静态工作感到满意,那么同样的方法当然会奏效。
gmdate()需要一个UNIX时间戳-自1970年1月1日以来的秒。你已经通过了相当于Saturday, Jan 3rd, 1970, 12:48:27am
的考试。
例如,试试这个:
echo gmdate('r', 175707);
从手动
返回的时间是格林尼治标准时间(GMT)
因此,如果你在CET(GMT+1),它确实会给你一个小时的0。
如果你想知道哪里出了问题,请看看这个:
echo date("d-M-Y H:i:s", 175707);
这将给出03-Jan-1970 00:48:27
的输出。即从1970年1月1日00:00:00开始的175707秒=CCD_ 6。