我通常使用这种方法计算两个日期之间的差异:
$datediff = strtotime($enddate) - strtotime($startdate);
$totalDays = floor($datediff/(60*60*24));
但现在我遇到了问题。现在我不应该考虑计算中的年份。例如,2014年1月2日和2015年1月6日两个日期之间的差异应该给我4天的结果。
为此,我将日期格式更改为m-d
,并使用以下方法:
$startdate = date('m-d',strtotime($startdate));
$enddate = date('m-d',strtotime($enddate));
$datediff = $enddate - $startdate;
$totalDays = floor($datediff/(60*60*24));
但我得到的结果为0.任何人都可以帮助我吗?我在做什么错误?
答案 0 :(得分:3)
你可以用1970年代替年份并对其进行计算。
$date1 = '2014-01-17 04:05:54';
$date2 = '2013-01-12 02:07:54';
$date1 = preg_replace('/([\d]{4})/', '1970', $date1);
$date2 = preg_replace('/([\d]{4})/', '1970', $date2);
$timestamp1 = strtotime($date1);
$timestamp2 = strtotime($date2);
$date_diff = gmdate('d H:i:s', abs($timestamp2-$timestamp1));
var_dump($date_diff);
答案 1 :(得分:3)
请试试这个:
$startdate = 'January 1 2014';
$enddate = 'February 6 2015';
$startdate = date('d-m-1970',strtotime($startdate));
$enddate = date('d-m-1970',strtotime($enddate));
$datediff = strtotime($enddate) - strtotime($startdate);
$totalDays = floor($datediff/(60*60*24));
echo $totalDays;
希望这会有所帮助
答案 2 :(得分:3)
这是php DateTime解决方案
$date1 = new DateTime('2015-01-02');
$date2 = new DateTime('2014-01-06');
switch (true) {
case ($date1 < $date2) :
$date2->setDate($date1->format('Y'), $date2->format('m'), $date2->format('d'));
break;
case ($date2 < $date1) :
$date1->setDate($date2->format('Y'), $date1->format('m'), $date1->format('d'));
break;
}
$interval = $date1->diff($date2);
echo $interval->format('%R%a days'); // +4 days
玩得开心!
或者只是切断一年并离开开关部分。
答案 3 :(得分:1)
只需采取&#34; m-d&#34;您的约会日期的一部分,并在任何一年附加到其结尾,例如&#34; -2014&#34 ;.然后,datediff()
将为您提供所需的答案。