二月和strtotime

时间:2013-03-26 13:41:02

标签: php date datetime strtotime

好吗?

我试图在这里计算一个计算日期,但我没有得到......

以下是:

$AtualMenos3 = date("m-d-Y", strtotime("2013-03-31 -3 month"));
$AtualMenos2 = date("m-d-Y", strtotime("2013-03-31 -2 month"));
$AtualMenos1 = date("m-d-Y", strtotime("2013-03-31 -1 month"));
$AtualMes = date("m-d-Y", strtotime("2013-03-31"));

正确应该是:

03-31-2013
02-28-2013
01-31-2013
12-31-2012

然而,这个PHP计算日期错误,因为当月份是2月(只有28天)时计算出错了。

实际输出:

03-31-2013
03-03-2013
01-31-2013
12-31-2012

有谁知道如何解释我如何解决这个问题?因为这很复杂......我没有想法......我什么都想不到:\

3 个答案:

答案 0 :(得分:1)

    $datetime = new DateTime('2013-03-31');
    $datetime->modify('-1 month');
    echo $datetime->format('Y-m-t') . "<br>";
    $datetime->modify('-1 month');
    echo $datetime->format('Y-m-t') . "<br>";
    $datetime->modify('-1 month');
    echo $datetime->format('Y-m-t') . "<br>";

See it in action

答案 1 :(得分:0)

找到该月最后一天的解决方法是:

 $lastDay = date("m-d-Y",(strtotime('next month',strtotime(date("m-01-Y"))) - 1)); 

希望它会有所帮助。

答案 2 :(得分:0)

如果您想坚持strtotime(),可以通过减去下个月的某一天轻松计算一个月的最后一天。

echo date("m-d-Y", strtotime("Apr 2013 -1 day")); // yields 03-31-2013
echo date("m-d-Y", strtotime("Mar 2013 -1 day")); // yields 02-28-2013
echo date("m-d-Y", strtotime("Feb 2013 -1 day")); // yields 01-31-2013