Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP DateTime::createFromFormat不工作_Php_Date - Fatal编程技术网

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,因此可以避免该问题。