以小时分钟和秒来获得时差

时间:2014-07-24 14:42:52

标签: php date date-math

我有两个约会,

$expiry_time = strtotime('comming from database');
$current_date = strtotime(date('Y-m-d H:i:s'));
$time_diff = ($expiry_time-$current_date)/(3600);

在这里,$time_diff会给我不同的时间。例如。 5.67。但是,我希望它以小时,分钟和秒格式。我怎样才能做到这一点? 感谢。

4 个答案:

答案 0 :(得分:3)

DateTime()DateInterval()

一起使用
$expiry_time = new DateTime($row['fromdb']);
$current_date = new DateTime();
$diff = $expiry_time->diff($current_time);
echo $diff->format('%H:%I:%S');

答案 1 :(得分:0)

使用date()函数。

$time_diff = $expiry_time - $current_date;
echo date('H:i:s', $time_diff);

答案 2 :(得分:0)

http://php.net/manual/fr/function.date-diff.php还有许多有用的东西可以执行此操作

答案 3 :(得分:0)

您应该使用DateTime类,但如果您使用的是早于5.2的PHP版本,您可以这样做:

function convert_time_by_seconds($interval) {
    if($interval < 0) {
        return false;
    }
    $seconds_n_miliseconds = explode('.', $interval);
    $interval = $seconds_n_miliseconds[0];

    $hours = floor($interval / (60*60));
    $minutes = floor(($interval - ($hours*60*60)) / 60);
    $seconds = floor(($interval - ($hours*60*60)) - ($minutes*60));
    $ms = empty($seconds_n_miliseconds[1]) ? 0 : $seconds_n_miliseconds[1];
    return array('h' => $hours, 'm' => $minutes, 's' => $seconds, 'ms' => $ms);
}

$time_diff = time() - strtotime('2014-07-17 14:23:51');
$result = convert_time_by_seconds($time_diff);
var_dump($result);