输入:
(new \ DateTime('2017-01午夜最后一天')) - >格式('Y-m-d')
输出:
2016年12月31日
不应该是2017-01-31吗?
它可能像2017年减去1个月一样工作..
答案 0 :(得分:4)
当你选择'2017-01'时,它意味着'2017-01-01'
echo new \DateTime('2017-01 midnight'))->format('Y-m-d H:i:s');//2017-01-01 00:00:00
并且“最后一天”在manual的更改日志中表示“-1天”:
PHP5.3.3“第一天”和“最后一天”分别改为表现为“+1天”和“-1天”。以前,这种行为是“第一天”和“最后一天”。
答案 1 :(得分:0)
你也可以像这样得到月份的最后一个日期:
$dateTime = new \DateTime('2017-01');
$dateTime->format('Y-m-t'); //output : "2017-01-31"
如果你只想要,可以上次约会:
$dateTime->format('t'); //output : "31"
或者,在一行中:
\DateTime::createFromFormat("Y-m-d", "2017-01-01")->format("Y-m-t");
或者,只需使用:
date("Y-m-t", strtotime("2017-01-31"))