首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在PHP中计算两个日期之间的月数?

在PHP中计算两个日期之间的月数?
EN

Stack Overflow用户
提问于 2012-11-16 20:47:47
回答 12查看 103.9K关注 0票数 39

如果不使用PHP5.3的date_diff函数(我使用的是PHP5.2.17),有没有一种简单而准确的方法可以做到这一点?我正在考虑类似下面的代码,但我不知道如何解释闰年:

代码语言:javascript
复制
$days = ceil(abs( strtotime('2000-01-25') - strtotime('2010-02-20') ) / 86400);
$months = ???;

我在试着算出一个人的月数。

EN

回答 12

Stack Overflow用户

发布于 2014-09-05 19:24:53

这是我在类中编写的一个简单方法,用于将所涉及的月数计算为两个给定的日期:

代码语言:javascript
复制
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;
}
票数 21
EN

Stack Overflow用户

发布于 2012-11-16 20:52:10

如下所示:

代码语言:javascript
复制
$date1 = strtotime('2000-01-25');
$date2 = strtotime('2010-02-20');
$months = 0;

while (($date1 = strtotime('+1 MONTH', $date1)) <= $date2)
    $months++;

echo $months;

如果要包括天数,请使用以下命令:

代码语言:javascript
复制
$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
票数 3
EN

Stack Overflow用户

发布于 2015-12-29 21:36:30

这是我的解决方案。它只检查年份和月份的日期。因此,如果一个日期为31.10.15,另一个为02.11.15,则返回1个月。

代码语言:javascript
复制
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']);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13416894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档