PHP:将日期从YFd格式转换为Ymd格式

Nan*_*ndu 0 php date

我想将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日

为什么第一个没有给出正确的结果?

Rik*_*esh 6

只需使用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对象,而我们可以使用该对象以任何格式的日期进行转换.