从之前的日期获得X个月并返回

时间:2013-01-19 12:55:35

标签: php date strtotime

下面的代码给了我从今天开始的X个月以及之后的几个月,但是我希望从2012年11月1日起返回X个月,然后返回。怎么办呢?

// $nrOfMonths can be 1, 3 and 6

function GetIncidents(nrOfMonths) {

    $stopDate = strtotime('-' . $nrOfMonths .' months');

    ... rest of the code ...
}

2 个答案:

答案 0 :(得分:4)

你可以这样做:

$stopDate = strtotime('1st November 2012 -' . $nrOfMonths .' months');

虽然,我更喜欢这种语法:

$stopDate = strtotime("1st November 2012 - {$nrOfMonths} months");

因此,您的代码应遵循以下模式:

function GetIncidents(nrOfMonths) {

    //your preferred syntax!

    //the rest of your code

}

答案 1 :(得分:2)

使用DateTimeDateInterval类来实现此目标。

$date = new DateTime('November 1, 2012');
$interval = new DateInterval('P1M'); // A month

for($i = 1; $i <= $nrOfMonths; $i++) {
    $date->sub($interval); // Subtract 1 month from the date object
    echo $i . " month(s) prior to November 1, 2012 was " . $date->format('F j, Y');
}