如果不使用PHP5.3的date_diff函数(我使用的是PHP5.2.17),有没有一种简单而准确的方法可以做到这一点?我正在考虑类似下面的代码,但我不知道如何解释闰年:
$days = ceil(abs( strtotime('2000-01-25') - strtotime('2010-02-20') ) / 86400);
$months = ???;
我在试着算出一个人的月数。
发布于 2014-09-05 19:24:53
这是我在类中编写的一个简单方法,用于将所涉及的月数计算为两个给定的日期:
public function nb_mois($date1, $date2)
{
$begin = new DateTime( $date1 );
$end = new DateTime( $date2 );
$end = $end->modify( '+1 month' );
$interval = DateInterval::createFromDateString('1 month');
$period = new DatePeriod($begin, $interval, $end);
$counter = 0;
foreach($period as $dt) {
$counter++;
}
return $counter;
}
发布于 2012-11-16 20:52:10
如下所示:
$date1 = strtotime('2000-01-25');
$date2 = strtotime('2010-02-20');
$months = 0;
while (($date1 = strtotime('+1 MONTH', $date1)) <= $date2)
$months++;
echo $months;
如果要包括天数,请使用以下命令:
$date1 = strtotime('2000-01-25');
$date2 = strtotime('2010-02-20');
$months = 0;
while (strtotime('+1 MONTH', $date1) < $date2) {
$months++;
$date1 = strtotime('+1 MONTH', $date1);
}
echo $months, ' month, ', ($date2 - $date1) / (60*60*24), ' days'; // 120 month, 26 days
发布于 2015-12-29 21:36:30
这是我的解决方案。它只检查年份和月份的日期。因此,如果一个日期为31.10.15
,另一个为02.11.15
,则返回1个月。
function get_interval_in_month($from, $to) {
$month_in_year = 12;
$date_from = getdate(strtotime($from));
$date_to = getdate(strtotime($to));
return ($date_to['year'] - $date_from['year']) * $month_in_year -
($month_in_year - $date_to['mon']) +
($month_in_year - $date_from['mon']);
}
https://stackoverflow.com/questions/13416894
复制相似问题