在PHP中将api返回日期时间字符串从24格式转换为12小时格式

时间:2018-04-27 12:31:41

标签: php datetime

我的日期时间如下

17/05/2018 23:59:00 PM

它像varchar(100)一样存储在数据库中。 我希望将此转换为17/05/2018 11:59:00 PM。 它是从api返回的。我试图修复尝试了很多方法。 不知何故,它正在工作,但明天就会像现在这样给予

18/05/2018 11:59 AM

。这是一种有效的方法。

 $startdate='17/05/2018 23:59:00 PM';
$myDateTime = DateTime::createFromFormat('d/m/Y H:i A',$startdate);
$newDateString = $myDateTime->format('d/m/Y h:i A');
echo $newDateString;

2 个答案:

答案 0 :(得分:1)

您正在使用AM / PM和24小时格式。这没有意义。 PHP可能正在尽力理解它,并将日期时间增加12小时,将其推迟到第二天。

如果你忽略了日期时间的PM,那就可以了:

$startdate='17/05/2018 23:59:00 PM';
$myDateTime = DateTime::createFromFormat('d/m/Y H:i:s+',$startdate);
$newDateString = $myDateTime->format('d/m/Y h:i:s A');
echo $newDateString;

Demo

答案 1 :(得分:0)

我会将时间戳保存为dB而不是实际日期

$startDateTime = DateTime::createFromFormat('d/m/Y H:i:s', '17/05/2018 23:59:00');
$timeStamp = $startDateTime->getTimeStamp();

$date = new DateTime();
$date->setTimestamp($timeStamp);

echo $date->format('d/m/Y h:i:s A');
相关问题