0

我在想这应该很简单。

$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

任何线索为什么?

4

1 回答 1

1

strtotime()生成一个 unix 时间戳,表示提供的时间与 1970 年 1 月 1 日之间的秒数。由于您没有在函数调用中指定日期,因此它假定您传递给函数时的当前日期。

因此,您上面的代码,今天运行会产生输出

$m_time1 = 1376024400
$m_time2 = 1376040600

当你把这些加在一起时,它会产生一个“时间” 3:30 AMin 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

PHPFiddle 示例

于 2013-08-10T03:39:54.530 回答