为什么DateTime不能解析dd.mm.yy总是正确的?

Kho*_*oly 2 php datetime

我遇到过这个奇怪的问题:

$date1 = new DateTime('10.10.04');
$date2 = new DateTime('25.03.07');

echo $date1->format('Y-m-d'); // result: 2016-02-15
echo "<br>";
echo $date2->format('Y-m-d'); // result: 2007-03-25
Run Code Online (Sandbox Code Playgroud)

由于格式相同,我无法解释为什么第一次尝试失败,但第二次尝试成功.我能做些什么吗?

我无法更改收到日期的格式,因此我必须阅读dd.mm.yy日期格式,最后将其格式化为Ymd格式.

搜索周围有关我的东西,但我找不到任何东西.

文档中获取,这应该是行为:

而如果分隔符是破折号( - )或点(.),则假定为欧洲dmy格式.

Ana*_*Die 7

正如大家所建议的那样,尝试使用DateTime :: createFromFormat().请检查以下代码:

<?php

$date1 = DateTime::createFromFormat('d.m.y','10.10.04');
$date2 = DateTime::createFromFormat('d.m.y','25.03.07');

echo $date1->format('Y-m-d'); // result: 2004-10-10

echo $date2->format('Y-m-d'); // result: 2007-03-25
?>
Run Code Online (Sandbox Code Playgroud)

输出:https://eval.in/518801