为什么日期时间解析 dd.mm.yy 不能始终正确


Why can't DateTime parse dd.mm.yy always correct?

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

$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

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

无法更改收到的日期格式,因此我必须以某种方式读取 dd.mm.yy 日期格式才能最终将其格式化为 Y-m-d 格式。

四处寻找对我有帮助的相关内容,但我找不到任何东西。

取自文档,这应该是以下行为:

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

正如大家建议的那样,尝试使用 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
?>

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