PHP strtotime(YYYY-mm最后一天)错误一个月

时间:2010-03-24 18:27:10

标签: php datetime strtotime

我在PHP 5.2.12中尝试以下命令:

print (date('Y-m-d', strtotime('2009-12 last day')));

关于php.net manual

date('m/d/y', strtotime('2009-03 last day')); # 03/31/09

它应该显示2009年3月的最后一天(2009-03-31)!

Mine返回上个月的最后一天?为什么? :

2009-11-30

4 个答案:

答案 0 :(得分:9)

您发布的代码以您描述的方式失败;似乎PHP手册页中的描述(SilentGhost提到的只是用户注释)是未经验证的代码。

如果您需要某个月的最后一天,请尝试以下操作:

date('Y-m-d', strtotime("2009-12 next month - 1 hour"));

答案 1 :(得分:2)

如果您使用的是PHP 5.3,请尝试使用DateTime类:

<?php
    $date = new DateTime("2009-03-01");
    $date->modify("last day of previous month");
    echo $date->format("m/d/y");
?>

必须为5.3,因为$date->modify("last day of previous month");在5.2。*或更早版本中不起作用。

答案 2 :(得分:0)

我认为你只是错误地使用相对格式,这对我有用:

echo date('m/d/y', strtotime('last day of 2009-12'));

来自the docs

  

'last day' ' of'? - 将当天设置为当月的最后一天。此短语最好与其后的月份名称一起使用。 - "last day of next month"

答案 3 :(得分:0)

date("Y-m-t", strtotime("201512"));

2015年12月