PHP:将字符串转换为DATETIME,并考虑am / pm

时间:2016-02-07 11:49:46

标签: php datetime

我想将字符串转换为php datatime,同时考虑到am / pm。

我想将'03/06/2015 12:17 am'转换为php datatime

我试过了,

$myDateTime = DateTime::createFromFormat('m/d/Y H:i', '03/27/2015 01:17 pm');
$newDateString = $myDateTime->format('Y-m-d H:i');

我的目标输出是2015-03-27 13:17:00

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:3)

根据您播种的输出,一行代码就足够了: -

<?php
echo $newDateString = date('Y-m-d H:i:s',strtotime('03/27/2015 01:17 pm'));
?>

输出: - 2015-03-27 13:17:00

https://eval.in/514315

答案 1 :(得分:1)

这不是一个答案,只需注意更易读的代码格式:

我建议仔细检查 strtotime()的预期结果,有时无法使用。

例如:

<?php
date_default_timezone_set("Europe/Moscow");
$today = date("d-m-Y",mktime(0,0,0,4,28,2013)); // 28-04-2013, sunday
$lastWeek = strtotime("last week $today");
$thisWeek = strtotime("this week $today");
$nextWeek = strtotime("next week $today");

echo "last week - ".$lastWeek." / ".date("d-m-Y H:i\n",$lastWeek);
echo "this week - ".$thisWeek." / ".date("d-m-Y H:i\n",$thisWeek);
echo "next week - ".$nextWeek." / ".date("d-m-Y H:i\n",$nextWeek);

结果:

last week - 1366574400 / 22-04-2013 00:00; expected 15-04-2013
this week - 1367179200 / 29-04-2013 00:00; expected 22-04-2013
next week - 1367784000 / 06-05-2013 00:00; expected 29-04-2013

这么晚的更新:     这个bug在2016年3月左右被修复了,版本&gt; 5.6.20和&gt; 7.0.4已经没有这个问题了