Php 如何用毫秒求两次和?
有没有办法用毫秒来求和两次,如下所示:Php 如何用毫秒求两次和?,php,Php,有没有办法用毫秒来求和两次,如下所示: 00:01:02.73 00:03:03.01 00:04:05.74 一个 结果应该是这样的: 00:01:02.73 00:03:03.01 00:04:05.74 格式很简单:小时:分钟:秒。毫秒 如果是,怎么做?我发现,它的代码比你的代码少,而且可以完成任务。我已经添加了毫秒函数。 我想知道php是否为此内置了一些东西。 /** * @author Masino Sinaga, http://www.openscriptsolution.
00:01:02.73
00:03:03.01
00:04:05.74
一个
结果应该是这样的:
00:01:02.73
00:03:03.01
00:04:05.74
格式很简单:小时:分钟:秒。毫秒
如果是,怎么做?我发现,它的代码比你的代码少,而且可以完成任务。我已经添加了毫秒函数。 我想知道php是否为此内置了一些东西。
/**
* @author Masino Sinaga, http://www.openscriptsolution.com
* @copyright October 13, 2009
*/
function sum_the_time($time1, $time2) {
$times = array($time1, $time2);
$seconds = 0;
$Imiliseconds = 0.0;
foreach ($times as $time){
list($rest, $miliseconds) = explode('.', $time);
$Imiliseconds += '0.'.$miliseconds;
list($hour, $minute, $second) = explode(':', $rest);
$seconds += $hour*3600;
$seconds += $minute*60;
$seconds += $second;
}
$seconds += floor($Imiliseconds);
$hours = floor($seconds/3600);
$seconds -= $hours*3600;
$minutes = floor($seconds/60);
$seconds -= $minutes*60;
$miliseconds = $Imiliseconds-floor($Imiliseconds);
// return "{$hours}:{$minutes}:{$seconds}:{$miliseconds}";
return sprintf('%02d:%02d:%02d:%02d', $hours, $minutes, $seconds, $miliseconds); // Thanks to Patrick
}
echo sum_the_time($time, $time2); // this will give you a result: 19:12:25
我写了几个函数来帮助我做到这一点
$time1 = "00:15:45.89";
$time2 = "00:18:30.22";
$milli1 = timeToMilliseconds($time1);
$milli2 = timeToMilliseconds($time2);
$new = $milli1 + $milli2;
$time = formatMilliseconds($new);
echo $time;
function timeToMilliseconds($time){
$time_start = substr($time, -11, -3);
$time_end = substr($time, -3);
$time_arr = explode(':', $time_start);
$seconds = 0;
foreach($time_arr as $key => $val){
if($key == 0){
$seconds += $val * 60 * 60;
}elseif($key == 1){
$seconds += $val * 60;
}elseif($key == 2){
$seconds += $val;
}
}
$seconds = $seconds.$time_end;
$milliseconds = $seconds * 1000;
return $milliseconds;
}
function formatMilliseconds($milliseconds) {
$seconds = floor($milliseconds / 1000);
$minutes = floor($seconds / 60);
$hours = floor($minutes / 60);
$milliseconds = $milliseconds % 1000;
$seconds = $seconds % 60;
$minutes = $minutes % 60;
$format = '%u:%02u:%02u.%03u';
$time = sprintf($format, $hours, $minutes, $seconds, $milliseconds);
return rtrim($time, '0');
}
您的解决方案@Scorpioni有问题,例如,当时间为1:34:55.831时,FormatMillistics的返回值为1582:10:31.704 我对timeToMilliseconds函数做了一些更改,我认为这更加一致:
function timeToMilliseconds($time){
$dateTime = new DateTime($time);
$seconds = 0;
$seconds += $dateTime->format('H') * 3600;
$seconds += $dateTime->format('i') * 60;
$seconds += $dateTime->format('s');
$seconds = floatval($seconds . '.' . $dateTime->format('u'));
return $seconds * 1000;
}
或者,如果您的PHP版本低于5.2.2,则可以执行以下操作:
function timeToMilliseconds($time){
sscanf($time, "%d:%d:%d.%d", $hours, $minutes, $seconds, $microseconds);
$seconds += $hours * 3600;
$seconds += $minutes * 60;
$seconds = floatval($seconds . '.' . $microseconds);
return $seconds * 1000;
}
我希望有人喜欢
如果我说了一些奇怪的话,我的英语很抱歉:p以毫秒为单位旋转并添加,然后重新格式化?你应该看看微秒,这是什么样的时间?这就像计算圈数一样time@taesu:听起来像是持续时间。绕赛道跑一圈需要h:m:s。乌萨特将严重失败。考虑23点00分+23点00分-> 1天2小时> >格式化为2小时。您不能将时间值用作unix时间戳。对于我来说,这将是一个很好的变体,如果它将返回我的结果,而不是0。。。因为对于我的这个系统来说,所有时间的总和永远不会超过几个小时