PHP日期差异计算

时间:2014-05-19 00:38:51

标签: php date datetime

$departure 2014-06-02 $date 2014-06-01 。我实际上通过sandbox运行了它,它出来了。但是,这是我在页面上的输出:2014-06-02 date: 2014-06-01 g: 16222

这是我的代码:

$days = 0;
$departure = strtotime($r['departure']);
echo $r['departure'];
echo " date: ".$date;
$datediff = abs(strtotime($date) - strtotime($departure));
$days = floor($datediff/(60*60*24));
echo " g: ".$days++;

所以天应该是2但它是16222。这是怎么回事?

3 个答案:

答案 0 :(得分:2)

看起来你要用两次strtotime转换$ r ["离开"]。这太多了。 只需一次转换即可尝试使用您的代码,它应该可以更好地运行。

答案 1 :(得分:1)

我通常使用类Date,这里有可能对你有用的功能(我最后添加了一个例子):

<?php

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

function differenceInt($dateStart, $dateEnd) {
    $start = sqlInt($dateStart);
    $end = sqlInt($dateEnd);
    return $end - $start;
}

function difference($dateStart, $dateEnd) {
    $difference = differenceInt($dateStart, $dateEnd);
    $result = array();
    $result['hours'] = $difference/3600;
    $result['minutes'] = $difference/60;
    $result['days'] = $difference/86400;
    return $result;
}

$dateStart = array('hour'=>'0', 'minutes'=>'0', 'month'=>'6', 'day'=>'1', 'year'=>'2014');
$dateEnd = array('hour'=>'0', 'minutes'=>'0', 'month'=>'6', 'day'=>'2', 'year'=>'2014');

echo '<pre>';
print_r(difference($dateStart, $dateEnd));
echo '</pre>';

?>

答案 2 :(得分:0)

它很简单,你需要使用DateTime类

$date1 = new DateTime($firstdate);
$date1ready = $date1->format('Y-m-d');

$date2 = new DateTime($seconddate);
$date2ready = $date1->format('Y-m-d');

$difff = $date2->diff($date1);

$days = $difff->d;