我想将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日
为什么第一个没有给出正确的结果?
答案 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