【发布时间】:2017-11-01 04:00:55
【问题描述】:
今天,\DateTime::createFromFormat 函数的行为让我感到困惑。
在我的例子中,我有一个字符串,以下列格式表示日期m/Y (05/2017)。当我想将字符串转换为 DateTime 对象时,我遇到了以下问题:
$date = \DateTime::createFromFormat('m/Y', '02/2017');
当我转储$date 变量时,里面的日期属性是'2017-03-03 11:06:36.000000'
但是,如果我在 $date = \DateTime::createFromFormat('d/m/Y', '01/02/2017'); 月份之前添加日期,我会返回一个具有正确日期属性的对象。 (很遗憾我无法更改日期的格式并添加日期。它必须是 m/Y)。
我想出的解决方法是将每月的第一天连接到我拥有的日期字符串 $date = '01/'.$dateString;,但我宁愿不这样做,因为它是硬编码的。
这里有什么问题? createFromFormat 函数是否缺少有关如何创建对象的信息?我对此很困惑。提前感谢大家的帮助!
【问题讨论】:
-
这只是创建对象 var_dump $date->format() (格式与日期相同,因此 Ymd 仍然适用等),你应该看到你所期望的 :)跨度>
-
它用今天的数据(第 31 天)填充缺失的数据,并调整以跳过无效日期。有用与否,就像大多数日期函数在 PHP 中一样。