$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
。这是怎么回事?
答案 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;