在php中将api return datetime字符串从24格式转换为12小时格式
我的约会时间如下在php中将api return datetime字符串从24格式转换为12小时格式,php,datetime,Php,Datetime,我的约会时间如下 17/05/2018 23:59:00 PM 它像varchar100一样存储在数据库中。 我想将此转换为2018年5月17日晚上11:59:00。 它正在从api返回。我尝试了很多方法来修复它。 不知何故,它是工作,但未来的明天的日期,就像它是给予现在这样 2018年5月18日上午11:59 .是做这件事的有效方法 $startdate='17/05/2018 23:59:00 PM'; $myDateTime = DateTime::createFromFormat('
17/05/2018 23:59:00 PM
它像varchar100一样存储在数据库中。
我想将此转换为2018年5月17日晚上11:59:00。
它正在从api返回。我尝试了很多方法来修复它。
不知何故,它是工作,但未来的明天的日期,就像它是给予现在这样
2018年5月18日上午11:59
.是做这件事的有效方法
$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个小时,将其推到第二天 如果你忽略了约会时间的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;
我会将时间戳保存到数据库中,而不是实际日期
$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');
你忘了计算秒数d/m/Y H:i:s Aif我加了d/m/Y H:i:s什么都没变你为什么要像varchar一样在数据库中存储日期?首先,我想把24小时格式的fomat转换成12小时格式。这是我的问题。实际上,当我删除最后一个字符AM并尝试将datetime转换为12小时格式时,它给出的是空的Y。我不明白。我的datetime来自api使用var_dump时,它给出的是字符串22。我如何才能将其更改为有效它只是一个字符串,因此您可以使用任意方式删除最后三个字符。substr、rtrim等@itsme更新了我的答案以处理上午/下午问题谢谢你的帮助。现在我解决了我的问题。