doukan1258
2016-06-08 14:33
浏览 103
已采纳

格式未知时创建PHP DateTime

With the help of this question, I have been able to parse a date string into a DateTime object, then display it in the desired format. The DateTime constructor works well in deciphering DateTime strings with one (very understandable) exception - it cannot tell the difference between dd/mm/YYYY and mm/dd/YYYY.

If I do the following:

$dt = new DateTime("05/03/1900"); // 5th march 1900
echo $dt->format('Y-m-d');

Then I get the following output:

1900-05-03

However, the original date is in dd/mm/YYYY format, so my output is incorrect - I now have the 3rd May 1900.

Is there a way to set DateTime to prefer dd/mm/YYYY over mm/dd/YYYY when parsing a date string?

Edit: I am calling date_default_timezone_set('Europe/London'); in the constructor of this class but this doesn't seem to have any effect. Perhaps this isn't linked to the DateTime class.

图片转代码服务由CSDN问答提供 功能建议

这个问题,我已经能够将日期字符串解析为 DateTime </ code>对象,然后以所需的格式显示它。 DateTime </ code>构造函数可以很好地解析 DateTime </ code>字符串中的一个(非常容易理解)异常 - 它无法区分 dd / mm / YYYY </ code>和 mm / dd / YYYY </ code>。</ p>

如果我执行以下操作:</ p>

  $ dt = new DateTime(  “1900年5月3日”);  // 5月5日1900 
echo $ dt-&gt;格式('Ym-d'); 
 </ code> </ pre> 
 
 

然后我得到以下输出:</ p> \ n

  1900-05-03 
 </ code> </ pre> 
 
 

但是,原始日期是 dd / mm / YYYY </ code> 格式,所以我的输出不正确 - 我现在有 1900年5月3日</ code>。</ p>

有没有办法将 DateTime </ code>设置为首选 解析日期字符串时, dd / mm / YYYY </ code>超过 mm / dd / YYYY </ code>?</ p>

编辑:</ em > 我在这个类的构造函数中调用 date_default_timezone_set('Europe / London'); </ code>,但这似乎没有任何效果。 也许这与 DateTime </ code>类没有关联。</ p> </ div>

1条回答 默认 最新

相关推荐 更多相似问题