PHP:从日期格式YYYY-MM-DD HH:MM:SS GMT+HH:MM获取时间戳



我正在从*.txt文件中读取行,并以这种风格获取字符串(日期格式):

2017-10-19 20:51:54 GMT+08:00
2020-03-31 13:19:31 GMT-08:00
2018-04-10 14:35:17 GMT

与函数DateTime::createFromFormat,我想把这样的行转换成时间字符串。之后,我想获得时间戳与getTimestamp();。所以,目前我的代码看起来像这样($date是我的读行):

$date = DateTime::createFromFormat("Y-m-d H:i:s", $date);
$timeStamp = $date->getTimestamp();

当我尝试这样做时,我得到这个错误消息:

Fatal error: Uncaught Error: Call to a member function getTimestamp() on bool in ...
谁有办法解决这个问题?
编辑:
关于Gordon的评论,我也试图添加缺失的部分("GMT"=> e和"+08:00"=> P),就像这样:
$date= DateTime::createFromFormat("Y-m-d H:i:s eP", $date);

由于提供的日期与指定的格式不匹配,您将得到此错误。

在createFromFormat() call之后添加以下行-

var_dump(DateTime::getLastErrors());

上面的行将返回错误。错误信息为- ">尾随数据"。这是因为"GMT+08:00"&;

为了正确处理它,你应该为createFormFormat提供可选的第三个参数,它是timezone,它期望它是一个DateTimeZone对象。因此,将createFromFormat函数更新为-

$timezone = new DateTimeZone('GMT+08:00');
$date = "2017-10-19 20:51:54";
$date = DateTime::createFromFormat("Y-m-d H:i:s", $date, $timezone);

我希望这对你有帮助。您必须将日期从时区中分离出来,并按照上面提到的方法进行处理。

最新更新