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。。。因为对于我的这个系统来说,所有时间的总和永远不会超过几个小时