本文实例讲述了PHP计算两个日期相差天数的方法。分享给大家供大家参考。具体实现方法如下:
PHP;">
diff($date2);
echo "difference " . $interval->y . " years," . $interval->m." months,".$interval->d." days ";
// shows the total amount of days (not divided into years,months and days like above)
echo "difference " . $interval->days . " days ";
-------------------------------------------------------- OR
/**
- Calculate differences between two dates with precise semantics. Based on PHPs DateTime::diff()
- implementation by Derick Rethans. Ported to PHP by Emil H,2011-05-02. No rights reserved.
/
function _date_range_limit($start,$end,$adj,$a,$b,$result)
{
if ($result[$a] < $start) {
$result[$b] -= intval(($start - $result[$a] - 1) / $adj) + 1;
$result[$a] += $adj intval(($start - $result[$a] - 1) / $adj + 1);
}
if ($result[$a] >= $end) {
$result[$b] += intval($result[$a] / $adj);
$result[$a] -= $adj * intval($result[$a] / $adj);
}
return $result;
}
function _date_range_limit_days($base,$result)
{
$days_in_month_leap = array(31,31,29,30,31);
$days_in_month = array(31,28,31);
_date_range_limit(1,13,12,"m","y",&$base);
$year = $base["y"];
$month = $base["m"];
if (!$result["invert"]) {
while ($result["d"] < 0) {
$month--;
if ($month < 1) {
$month += 12;
$year--;
}
$leapyear = $year % 400 == 0 || ($year % 100 != 0 && $year % 4 == 0);
$days = $leapyear ? $days_in_month_leap[$month] : $days_in_month[$month];
$result["d"] += $days;
$result["m"]--;
}
} else {
while ($result["d"] < 0) {
$leapyear = $year % 400 == 0 || ($year % 100 != 0 && $year % 4 == 0);
$days = $leapyear ? $days_in_month_leap[$month] : $days_in_month[$month];
$result["d"] += $days;
$result["m"]--;
$month++;
if ($month > 12) {
$month -= 12;
$year++;
}
}
}
return $result;
}
function _date_normalize($base,$result)
{
$result = _date_range_limit(0,60,"s","i",$result);
$result = _date_range_limit(0,"h",24,"d",$result);
$result = _date_range_limit_days(&$base,&$result);
$result = _date_range_limit(0,$result);
return $result;
}
/** - Accepts two unix timestamps.
*/
function _date_diff($one,$two)
{
$invert = false;
if ($one > $two) {
list($one,$two) = array($two,$one);
$invert = true;
}
$key = array("y","s");
$a = array_combine($key,array_map("intval",explode(" ",date("Y m d H i s",$one))));
$b = array_combine($key,$two))));
$result = array();
$result["y"] = $b["y"] - $a["y"];
$result["m"] = $b["m"] - $a["m"];
$result["d"] = $b["d"] - $a["d"];
$result["h"] = $b["h"] - $a["h"];
$result["i"] = $b["i"] - $a["i"];
$result["s"] = $b["s"] - $a["s"];
$result["invert"] = $invert ? 1 : 0;
$result["days"] = intval(abs(($one - $two)/86400));
if ($invert) {
_date_normalize(&$a,&$result);
} else {
_date_normalize(&$b,&$result);
}
return $result;
}
$date = "2014-12-04 19:37:22";
echo '';
';
print_r( _date_diff( strtotime($date),time() ) );
echo '
?>
希望本文所述对大家学习PHP程序设计有所帮助。
原文链接:https://www.f2er.com/php/20701.html