4

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

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

关于php.net 手册

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

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

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

2009-11-30
4

4 回答 4

9

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

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

date('Y-m-d', strtotime("2009-12 next month - 1 hour"));
于 2010-03-24T18:45:02.707 回答
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.* 或更早版本中不起作用。

于 2010-03-24T18:56:29.773 回答
0

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

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

文档

'last day' ' of'?-- 将日期设置为当月的最后一天。这个短语最好与它后面的月份名称一起使用。--"last day of next month"

于 2013-07-10T23:48:16.993 回答
0

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

2015 年 12 月

于 2015-12-02T19:45:27.147 回答