我的日期时间如下
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;
答案 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;
答案 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');