我想在 php 中添加时间,但经过数小时的 google'ing 和尝试后,我仍然无法找到解决方案。
我的价值观是:
$newTotal = '00:45:00';
$oldTotal = '00:16:00';
我想把这两个加起来,组成 01:01:00。
你能举个例子吗,我真的很绝望!:p
提前致谢,
用于strtotime()
将它们转换为 Unix 时间戳,然后将它们添加为整数:
$newTotal = '00:45:00';
$oldTotal = '00:16:00';
$total = strtotime($newTotal) + strtotime($oldTotal);
要再次格式化hh:mm:ss
,请使用date()
:
echo date('H:i:s', $total);
这给出了:
01:01:00
如果这些值总是这样,你可以用 substr() 分解它们
$hours1 = substr($newTotal, 0, 2);
等等。然后简单地把秒加起来,做一个除法和修改,然后冒泡到小时,瞧!
$secondstotal = $seconds1+$seconds2;
$restseconds = $secondstotal % 60;
$minutesfromseconds = floor($restseconds / 60);
$minutestotal = $minutes1+$minutes2+$minutesfromseconds;
等等
为最小错误保留开始日期。
<?php
$origin = '00:00:00';
$newTotal = '00:45:00';
$oldTotal = '00:16:00';
$added = strtotime($newTotal) + (strtotime($oldTotal) - strtotime($origin));
echo date('H:i:s', $added );
输出 :
01:01:00
注意,如果你添加后的时间超过23:59:59,你会得到错误的结果。
没有时间函数的另一种解决方案:
function sumtotal($a,$b) {
$i = explode(':',$a);
$j = explode(':',$b); // 0hh:1mm:2ss
$k = array(0,0,0,0); // 0days:1hours:2minutes:3seconds
$k[3] = $i[2]+$j[2];
$k[2] = (int)($k[3]/60)+$i[1]+$j[1];
$k[1] = (int)($k[2]/60)+$i[0]+$j[0];
$k[0] = (int)($k[1]/24);
$k[3] %= 60;
$k[2] %= 60;
$k[1] %= 24;
if ($k[3]<10) $k[3] = '0'.$k[3];
if ($k[2]<10) $k[2] = '0'.$k[2];
if ($k[1]<10) $k[1] = '0'.$k[1];
return $k[0].' days : '.$k[1].' hours : '.$k[2].' minutes : '.$k[3].' seconds';
}
$newTotal = '01:45:21';
$oldTotal = '03:16:56';
echo sumtotal($newTotal,$oldTotal); // result: 0 days : 05 hours : 02 minutes : 17 seconds