Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中将api return datetime字符串从24格式转换为12小时格式_Php_Datetime - Fatal编程技术网

在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更新了我的答案以处理上午/下午问题谢谢你的帮助。现在我解决了我的问题。