DateTime Symfony第一个月是12月

时间:2017-08-21 15:33:04

标签: php symfony datetime

输入:

  

(new \ DateTime('2017-01午夜最后一天')) - >格式('Y-m-d')

输出:

  

2016年12月31日

不应该是2017-01-31吗?

它可能像2017年减去1个月一样工作..

2 个答案:

答案 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"))