如何计算下一个第X天(当月)?

时间:2012-10-08 13:38:34

标签: php

我想计算日历中的下一个第X天。

例如今天是2012-10-08。如果X = 25我希望它返回2012-10-25,但如果X = 06我想要2012-11-06。如果月份没有所需的X天,则必须返回该月的最后一天(例如,如果我正在寻找2月30日,如果闰年则必须返回28或29)

看起来很简单,但我被所有特殊情况(一年中的最后一个月,28-31天等)抓住了。

1 个答案:

答案 0 :(得分:3)

您可以使用strtotime()t

$x = 5;                   // given day
if(date('t') < $x){       // check if last day of the month is lower then given day
    $x = date('t');       // if yes, modify $x to last day of the month
}

$month = date('m');       // current month
if(date('d') >= $x){      // if $x day is now or has passed
    $month = $month+1;    // increase month by 1
}

$year = date('Y');        // current year
if($month > 12){          // if $month is greater than 12 as a result from previous if
    $year = date('Y')+1;  // increase year
    $month = 1;           // set month to January
}

if(date('t', strtotime($year.'-'.$month.'-01')) < $x){       // check if last day of the new month is lower then given day
    $x = date('t', strtotime($year.'-'.$month.'-01'));       // if yes, modify $x to last day of the new month
}

$date = date('d F Y', strtotime($year.'-'.$month.'-'.$x));
// 05 November 2012

HERE是一个不错的教程。