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

时间:2016-02-15 10:59:55

标签: 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

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

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

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

取自documentation,这应该是行为:

  

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

1 个答案:

答案 0 :(得分: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
?>

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