PHP DateTime::createFromFormat不工作
PHP DateTime::createFromFormat不工作,php,date,Php,Date,DateTime::createFromFormat似乎无法正常工作,是否有人知道原因和/或如何修复 鉴于此代码: var_dump(DateTime::createFromFormat('m', '02')->format('m')); var_dump(DateTime::createFromFormat('n', '2')->format('n')); 我的预期产出是 02 2 然而,我实际上得到: 03 3 例如: 我已经在多台服务器上对此进行了测试,包括: Win
DateTime::createFromFormat
似乎无法正常工作,是否有人知道原因和/或如何修复
鉴于此代码:
var_dump(DateTime::createFromFormat('m', '02')->format('m'));
var_dump(DateTime::createFromFormat('n', '2')->format('n'));
我的预期产出是
02
2
然而,我实际上得到:
03
3
例如:
我已经在多台服务器上对此进行了测试,包括:
- WinPHP5.4
- Linux PHP 5.3
- 毒蛇码板
var_dump(DateTime::createFromFormat('!m', '02')->format('m'));
var_dump(DateTime::createFromFormat('!n', '2')->format('n'));
# result:
string(2) "02"
string(1) "2"
从:
“如果格式不包含字符!则
未在格式中指定的生成时间将设置为
当前系统时间。”
以下各项应按预期工作:
var_dump(DateTime::createFromFormat('!m', '02')->format('m'));
var_dump(DateTime::createFromFormat('!n', '2')->format('n'));
# result:
string(2) "02"
string(1) "2"
@tpaksu谢谢,这就解释了为什么会发生。@tpaksu谢谢,这就解释了为什么会发生。这对我的用例很有用。但出于好奇,如果我只想解析月份,并使用当前的年/日/时间,该怎么办?@Petah,这就是您(使用原始代码)所做的。但是2月,也就是第二个月,没有30天,所以它已经提前到第三个月了。
代码>默认值为1970-01-01 00:00:00,因此它避免了这个问题。这对我的用例很有效。但出于好奇,如果我只想解析月份,并使用当前的年/日/时间,该怎么办?@Petah,这就是您(使用原始代码)所做的。但是2月,也就是第二个月,没有30天,所以它已经提前到第三个月了。代码>默认值为1970-01-01 00:00:00,因此可以避免该问题。