目前,我正在请求外部 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
那么,解析这种日期的正确形式是什么?
谢谢。
答案 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