日期时间从格式创建

时间:2010-08-22 16:00:11

标签: php datetime-format

我想创建具有特定格式的日期,例如03-20-2010格式为m-d-Y但日期功能不理解此日期并返回错误的日期

$date = date("Y-m-d", strtotime("03-20-2010"));

上面的代码返回错误的日期,它背后的原因是什么以及如何避免错误的结果?我想要日期功能识别的格式很少是“Y / m / d”,“m / d / Y”,“F d,Y”,“M d,Y”。

3 个答案:

答案 0 :(得分:23)

有趣的是,您的问题标题包含问题的完全解决方案!

使用DateTime::createFromFormat。 (注意:需要PHP> = 5.3)

它允许您指定预期日期的确切格式,因此strtotime()不明确/英美偏见。

这应该有效:

$date = DateTime::createFromFormat("Y-m-d", "2010-03-20");

答案 1 :(得分:5)

strtotime不会识别由' - '分隔的美式样式,但如果使用'/'分隔符,它将正常工作。

$date = date("Y-m-d", strtotime(str_replace('-', '/', "03-20-2010")));

正如Pekka所说,如果您的代码明确声明您正在使用的格式,那就更好了。

答案 2 :(得分:1)

您可以使用mktime获取时间戳并使用该时间戳

$exact_time = "03-20-2010";
$exploded_et = explode("-",$exact_time);
$date = date("Y-m-d",mktime(0,0,0,$exploded_et[0],$exploded_et[1],$exploded_et[2]));
相关问题