Aya*_*avi 2 php datetime-format
我想创建具有特定格式的日期,例如03-20-2010格式为mdY但日期功能不理解此日期并返回错误的日期
$date = date("Y-m-d", strtotime("03-20-2010"));
Run Code Online (Sandbox Code Playgroud)
上面的代码返回错误的日期,它背后的原因是什么以及如何避免错误的结果?我想要日期功能识别的格式很少是"Y/m/d","m/d/Y","F d,Y","M d,Y".
Pek*_*ica 23
有趣的是,你的问题标题包含问题的确切解决方案!
使用DateTime::createFromFormat.(注意:需要PHP> = 5.3)
它允许您指定期望日期的确切格式,因此没有任何strtotime()歧义/英美偏见.
这应该工作:
$date = DateTime::createFromFormat("Y-m-d", "2010-03-20");
Run Code Online (Sandbox Code Playgroud)
strtotime不会识别由' - '分隔的美式样式,但如果使用'/'分隔符,它将正常工作.
$date = date("Y-m-d", strtotime(str_replace('-', '/', "03-20-2010")));
Run Code Online (Sandbox Code Playgroud)
正如Pekka所说,如果您的代码明确声明您正在使用的格式,那就更好了.