将API返回DateTime字符串从24格式转换为PHP中的12小时格式



我有一个如下

的日期时间
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;

您使用的是AM/PM和24小时格式。那没有意义。PHP可能正在尽力理解它,并在DateTime将其推到第二天的时间里增加了12个小时。

如果您忽略了DateTime中的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

我会将时间戳保存到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');

最新更新