【发布时间】:2011-11-30 09:16:22
【问题描述】:
如果我有 2 个时间变量:
a = 00:00:12 and b = 00:00:05
我如何将它们加在一起制作:
c = 00:00:17 ?
然后我需要将它们分成一个平均值, 但我坚持添加部分。
我以这种格式从数据库中获取数据,当我尝试一个简单的:
c=a+b;
我明白了:
00
如何对时间变量进行简单的数学运算?
【问题讨论】:
如果我有 2 个时间变量:
a = 00:00:12 and b = 00:00:05
我如何将它们加在一起制作:
c = 00:00:17 ?
然后我需要将它们分成一个平均值, 但我坚持添加部分。
我以这种格式从数据库中获取数据,当我尝试一个简单的:
c=a+b;
我明白了:
00
如何对时间变量进行简单的数学运算?
【问题讨论】:
或者你直接往前走;-)
<?php
$a = "00:00:12";
$b = "00:00:05";
function addTime($timeA, $timeB) {
$timeAcomponents = explode(":", $timeA);
$timeBcomponents = explode(":", $timeB);
$timeAinSeconds = $timeAcomponents[0]*60*60 + $timeAcomponents[1]*60 + $timeAcomponents[2];
$timeBinSeconds = $timeBcomponents[0]*60*60 + $timeBcomponents[1]*60 + $timeBcomponents[2];
$timeABinSeconds = $timeAinSeconds + $timeBinSeconds;
$timeABsec = $timeABinSeconds % 60;
$timeABmin = (($timeABinSeconds - $timeABsec) / 60) % 60;
$timeABh = ($timeABinSeconds - $timeABsec - $timeABmin*60) / 60 / 60;
return str_pad((int) $timeABh,2,"0",STR_PAD_LEFT).":"
.str_pad((int) $timeABmin,2,"0",STR_PAD_LEFT).":"
.str_pad((int) $timeABsec,2,"0",STR_PAD_LEFT);
}
echo "Adding time variables:\n";
echo "$a + $b = ".addTime($a, $b);
?>
【讨论】:
$date['first'] = DateTime::createFromFormat('H:i:s', "00:00:12");
$date['second'] = DateTime::createFromFormat('H:i:s', "00:00:05");
$interval = new DateInterval('PT'. $date['second']->format('s') .'S');
$date['first']->add($interval);
echo $date['first']->format('s'); // echoes 17
【讨论】:
在 MySQL 中你可以这样做 -
SET @a = '00:00:12';
SET @b = '00:00:05';
SET @a_sec = TIME_TO_SEC(@a);
SET @b_sec = TIME_TO_SEC(@b);
SET @c_sec = @a_sec + @b_sec;
SELECT SEC_TO_TIME(@c_sec);
+---------------------+
| SEC_TO_TIME(@c_sec) |
+---------------------+
| 00:00:17 |
+---------------------+
【讨论】: