我在想这应该很简单。
$m_time1 = strtotime('1:00:00');
$m_time2 = strtotime('5:30:00');
$m_total = $m_time1 + $m_time2;
echo date('h:i:s', $m_total);
结果是3:30:00
但应该是6:30:00
任何线索为什么?
strtotime()
生成一个 unix 时间戳,表示提供的时间与 1970 年 1 月 1 日之间的秒数。由于您没有在函数调用中指定日期,因此它假定您传递给函数时的当前日期。
因此,您上面的代码,今天运行会产生输出
$m_time1 = 1376024400
$m_time2 = 1376040600
当你把这些加在一起时,它会产生一个“时间” 3:30 AM
in the year 2057
。
为了避免这种情况发生,您需要在添加它们之前从时间戳中减去“今天”的时间戳,然后在添加后再次添加它。
$today = strtotime("TODAY");
$m_time1 = strtotime('1:00:00') - $today;
$m_time2 = strtotime('5:30:00') - $today;
$m_total = $m_time1 + $m_time2 + $today;
echo date('h:i:s', $m_total);
上面的代码回显6:30:00
。