我有一个DateTime格式:2016-04-06T15:17:42.97074Z
我是在twitch api上从v5获得的。
我需要将其转换为使用PHP进行比较的unix时间戳。
目前我正在尝试转换为DateTime对象:$dateTime = DateTime::createFromFormat(DateTime::ISO8601, $json["created_at"]);
,我也尝试使用DateTime::W3C
,但无济于事。
$json["created_at"]
肯定包含转换时间,因为echo $json["created_at"]
会返回时间。
答案 0 :(得分:0)
createFromFormat在被要求解析ISO8601时拒绝小数秒,但您可以简单地使用该字符串构造DateTime,例如。
$str='2016-04-06T15:17:42.97074Z';
//this will work...
$dt1=new \DateTime($str);
//but this won't...
$dt2=\DateTime::createFromFormat(\DateTime::ATOM, $str);
var_dump($dt1);
var_dump($dt2);
这将在php 5.6.0 - 5.6.30, hhvm-3.15.4 - 3.17.1, 7.0.0 - 7.1.1
中输出以下内容object(DateTime)#1 (3) {
["date"]=>
string(26) "2016-04-06 15:17:42.970740"
["timezone_type"]=>
int(2)
["timezone"]=>
string(1) "Z"
}
bool(false)
另见PHP DateTime::createFromFormat doesn't parse ISO 8601 date time