PHP:将日期从Y-F-d格式转换为Y-m-d格式

时间:2014-07-02 06:06:02

标签: php date

我想将php日期从 Y-F-d 格式转换为 Y-m-d 格式。 我使用下面的代码。

<?php
$originalDate = "2014-March-03";
$newDate = date("Y-m-d", strtotime($originalDate));
echo $newDate ;
?>

我得到了像

这样的输出

2014年3月1日

当我转换日期“2014年3月3日”

<?php
$originalDate = "2014-Mar-03";
$newDate = date("Y-m-d", strtotime($originalDate));
echo $newDate ;
?>

我得到像

那样的输出

2014年3月3日

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

3 个答案:

答案 0 :(得分: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');

<强> DEMO

原因:由于strtotime只接受特定格式的日期(ISO 8601 (YYYY-MM-DD)),因此它希望能够识别我们提供给它的所有日期格式。更多细节的Read Note部分strtotime函数。

而DateTime :: createFromFormat函数返回根据指定格式格式化的新DateTime对象,而不是我们可以使用该对象以任何日期格式进行转换。

答案 1 :(得分:0)

您需要在日期功能

中使用F代替M
$originalDate = "2014-Mar-03";
$newDate = date("Y-F-d", strtotime($originalDate));
echo $newDate ;

F用于表示一个月的全文,例如1月或3月。

答案 2 :(得分:0)

您可以使用:

$originalDate = "2014-March-03";
$date = DateTime::createFromFormat('Y-F-d', $originalDate);
echo $date->format('Y-m-d');

输出是:

2014-03-03