在这个问题的帮助下,我已经能够将日期字符串解析为一个DateTime对象,然后以所需的格式显示它.该DateTime构造效果很好破译DateTime一个(非常可以理解的)异常的字符串-它不能告诉之间的区别dd/mm/YYYY和mm/dd/YYYY.
如果我执行以下操作:
$dt = new DateTime("05/03/1900"); // 5th march 1900
echo $dt->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)
然后我得到以下输出:
1900-05-03
Run Code Online (Sandbox Code Playgroud)
但是,原始日期是dd/mm/YYYY格式,所以我的输出不正确 - 我现在有3rd May 1900.
有没有一种方法来设置DateTime更喜欢dd/mm/YYYY在mm/dd/YYYY解析日期字符串时?
编辑:
我date_default_timezone_set('Europe/London');在这个类的构造函数中调用,但这似乎没有任何影响.也许这与DateTime班级无关.
您可以使用DateTime :: createFromFormat
$dt = DateTime::createFromFormat( 'd/m/Y', '05/03/1900' );
echo $dt->format( 'Y-m-d' );
Run Code Online (Sandbox Code Playgroud)