我想将PHP日期从YFd格式转换为Ymd格式.我使用下面的代码.
<?php
$originalDate = "2014-March-03";
$newDate = date("Y-m-d", strtotime($originalDate));
echo $newDate ;
?>
Run Code Online (Sandbox Code Playgroud)
我得到一个输出
2014年3月1日
当我转换日期 "2014年3月3日"
<?php
$originalDate = "2014-Mar-03";
$newDate = date("Y-m-d", strtotime($originalDate));
echo $newDate ;
?>
Run Code Online (Sandbox Code Playgroud)
我得到了像
2014年3月3日
为什么第一个没有给出正确的结果?
只需使用DateTime 类,
$date = DateTime::createFromFormat('Y-M-d', '2014-Mar-03');
echo $date->format('Y-m-d');
$date = DateTime::createFromFormat('Y-F-d', '2014-March-03');
echo $date->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)
演示.
原因:由于strtotime只接受特定格式的日期(ISO 8601 (YYYY-MM-DD)),它希望能够识别我们提供给它的所有日期格式.有关更多详细信息,请参阅 strtotime函数的注释部分.
而DateTime :: createFromFormat函数返回根据指定格式格式化的新DateTime对象,而我们可以使用该对象以任何格式的日期进行转换.