代码之家  ›  专栏  ›  技术社区  ›  Đạt Mèo

PHP DateTime::createFromFormat返回意外结果

  •  -1
  • Đạt Mèo  · 技术社区  · 8 年前

    以下代码继续返回2018年3月2日,而不是2018年2月28日 我真的不知道为什么。

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

    你能向我解释一下为什么它会返回这样的结果吗?还有什么方法可以解决这个问题吗。

    非常感谢。

    2 回复  |  直到 8 年前
        1
  •  3
  •   Niklesh Raut    8 年前

    如果不明确提供日部分,则当前 白天

    当前日期为30,如果您不提供,则默认情况下需要30天,2月份不存在,因此它会增加2天,通常是下个月的3月份。

    如果您想要本月的最后日期,请输入 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");
    
        2
  •  1
  •   Syscall - leaving SO... Juhzuri    8 年前

    您必须指定一天:

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