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

时间:2021-04-15 17:04:40

标签: php string date datetime date-format

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

<块引用>

16/11/2020 12:00:00米。

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

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

但它抛出这个错误:

<块引用>

DateTime::__construct(): 无法解析时间字符串 (16/11/2020 12:00:00 am) 在位置 0 (1):意外字符

起初,我以为是“上午”。部分可能会导致我做了这个改变:

$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

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

谢谢。

1 个答案:

答案 0 :(得分:1)

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

<?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