如何转换此日期:“16/11/2020 12:00:00 a. m.”使用 PHP 到“2020-11-16 00:00:00”?

How convert this date: "16/11/2020 12:00:00 a. m." to "2020-11-16 00:00:00" with PHP?

目前,我正在请求外部网络服务以获取一些重要信息。然而,这个网络服务 return 我的日期是这样的:

16/11/2020 12:00:00 a. m.

所以,我在其他实现中使用这样的代码来获取日期时间:

$date = '16/11/2020 12:00:00 a. m.';
$newDateTime = new \DateTime($date);

但是它抛出这个错误:

DateTime::__construct(): Failed to parse time string (16/11/2020 12:00:00 am) at position 0 (1): Unexpected character

起初,我以为是“a.m.”部分可能导致我做了这个改变:

$date = '16/11/2020 12:00:00 a. m.';
$date        =  str_replace('a. m.', 'am', $date);
$date        =  str_replace('p. m.', 'pm', $date);
$newDateTime = new \DateTime($date);

但错误依然存在。我最后一次尝试是这样的:

$date = '16/11/2020 12:00:00 a. m.';
$date        =  str_replace('a. m.', 'am', $date);
$date        =  str_replace('p. m.', 'pm', $date);
$date        =  date("Y-m-d H:s:i", strtotime($date));
$newDateTime = new \DateTime($date);

但是我得到的结果日期是:

1970-01-01 00:00:00

那么,解析这种日期的正确格式是什么?

谢谢。

您需要提供匹配的格式说明:

<?php
$date = '16/11/2020 12:05:30 a. m.';
$date        =  str_replace('a. m.', 'am', $date);
$date        =  str_replace('p. m.', 'pm', $date);
$newDateTime = \DateTime::createFromFormat('d/m/Y h:i:s A', $date);
print_r($newDateTime->format('Y-m-d h:i:s'));

输出为:

2020-11-16 12:05:30