PHP DateTime :: createFromFormat返回意外结果

时间:2018-01-30 08:07:16

标签: php datetime

以下代码将继续返回2018/03/02而不是2018/02/28 我真的不知道为什么。

var_dump(DateTime::createFromFormat('Y 年 m 月', "2018 年 02 月"));

你能解释一下为什么它会返回这样的结果,并且有任何解决方法。

谢谢

2 个答案:

答案 0 :(得分:2)

  

没有明确地提供日期部分将有当前   天

当前日期为30,默认情况下,如果您不提供,则在2月份不提供,因此它会增加2天,这往往会在下个月进行。

如果您希望当月的上一个日期将01作为日期并像这样使用

<?php
$date = DateTime::createFromFormat('Y 年 m 月 d', "2018 年 02 月 01");
var_dump($date->format("Y-m-t"));
?>

Demo

如果你在变量中获得价值,那么最后只需添加01字符串

$myDate = "2018 年 02 月";
$date = DateTime::createFromFormat('Y 年 m 月 d', $myDate." 01");

答案 1 :(得分:1)

您必须指定一天:

var_dump(DateTime::createFromFormat('Y 年 m 月 d', "2018 年 02 月 01"));
// 2018-02-01