我使用了一个函数来计算2个日期之间的日期差异。
这是我的功能
function date_difference ($date_1, $date_2) {
$val_1 = new DateTime($date_1);
$val_2 = new DateTime($date_2);
$interval = $val_1->diff($val_2);
$year = $interval->y;
$month = $interval->m;
$day = $interval->d;
$output = '';
if($year > 0){
if ($year > 1){
$output .= $year." years ";
} else {
$output .= $year." year ";
}
}
if($month > 0){
if ($month > 1){
$output .= $month." months ";
} else {
$output .= $month." month ";
}
}
if($day > 0){
if ($day > 1){
$output .= $day." days ";
} else {
$output .= $day." day ";
}
}
if($day == 0)
$output.=' Almost Over';
if($day < 0)
$output.= ' Expired';
return $output;
}
我正在使用它
echo date_difference(date('m/d/Y'),'02/06/2013');
它显示结果为25天,因为它应显示已过期。任何人都可以指出我做错了。
答案 0 :(得分:2)
当我看到这个XKCD页面时,我希望有机会发布它,就在这里!
当您的代码尝试解析02/06/2013
时,它如何知道您的意思是&#34; 2月2日&#34;或&#34; 6月6日&#34;?在给出解析日期时,您应始终使用YYYY-MM-DD
格式,或者更好地硬编码实际数字时间戳(在本例中为1360126800)
答案 1 :(得分:2)
DateInterval
不会有负值,您需要比较两个DateTime对象。
更改为
if($val_1 < $val_2 && $day == 0)
$output.=' Almost Over';
if($val_1 > $val_2)
$output.= ' Expired';
return $output;
答案 2 :(得分:1)
只需使用UNIX时间戳,这样就应该很容易计算。
它可以在Y-D-M中显示,如果你觉得有点花哨,你甚至可以制作一个倒计时钟。
大多数MMO和管理系统使用它来注册日期&amp;注册时间并显示该成员在社区中的时间。
希望它有所帮助!