如何获得以毫秒为单位的时差

jas*_*n45 6 php

我无法围绕这个我的大脑,所以我希望有人可以提供帮助.我有一首歌曲长度,以毫秒为单位.我也有歌曲以DATETIME格式播放的日期.我想要做的是找出歌曲播放时间剩余多少毫秒.

$tracktime = 219238;  
$dateplayed = '2011-01-17 11:01:44';  
$starttime = strtotime($dateplayed);
Run Code Online (Sandbox Code Playgroud)

我使用以下内容确定剩余时间,但似乎不正确.

$curtime = time();   
$timeleft = $starttime+round($tracktime/1000)-$curtime;  
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

小智 20

根据我的需要,我使用了以下方法:

$curTime = microtime(true);
// something time consuming here
...
// get time difference in milliseconds
$timeConsumed = round(microtime(true) - $curTime,3)*1000; 
Run Code Online (Sandbox Code Playgroud)

所以,重点在于我们在这里使用float表示时间(参见http://php.net/manual/en/function.microtime.php)

希望您能根据自己的需要采用它.


Rau*_*net 1

我使用以下一组函数来处理 mysql 日期,也许它们可以帮助你:

function sqlArray($date, $trim=true) {
    $result = array();
    $result['day'] = ($trim==true) ? ltrim(substr($date,8,2),'0') : substr($date,8,2);
    $result['month'] = ($trim==true) ? ltrim(substr($date,5,2),'0') : substr($date,5,2);
    $result['year'] = substr($date,0,4);
    $result['hour'] = substr($date,11,2);
    $result['minutes'] = substr($date,14,2);
    return $result;
}

function sqlInt($date) {
    $date = sqlArray($date);
    return mktime($date['hour'], $date['minutes'], 0, $date['month'], $date['day'], $date['year']);
}

function difference($dateStart, $dateEnd) {
    $start = sqlInt($dateStart);
    $end = sqlInt($dateEnd);
    $difference = $end - $start;
    $result = array();
    $result['ms'] = $difference;
    $result['hours'] = $difference/3600;
    $result['minutes'] = $difference/60;
    $result['days'] = $difference/86400;
    return $result;
}
Run Code Online (Sandbox Code Playgroud)

在你的情况下它应该是这样的:

$dateplayed = '2011-01-17 11:01:44'; 
print_r(difference($dateplayed, date('Y:m:d')));
Run Code Online (Sandbox Code Playgroud)

希望它有效:D