我正在从*.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);
我希望这对你有帮助。您必须将日期从时区中分离出来,并按照上面提到的方法进行处理。