Jah*_*ion 8 php datetime rfc3339 google-plus
我正在尝试格式化从Google + Api传递的日期,就像指南在RFC 3339格式中说的那样:
PUBLISHED-> datetime->此活动最初发布的时间.格式化为RFC 3339时间戳.
所以通过php文档我发现:
DATE_RFC3339与DATE_ATOM相同(自PHP 5.1.3起)
这两种格式都是这样的:
"YMD\TH:我:SP"
实际上Google api的输出是这样的:
2014-01-22T10:36:00.222Z
当我尝试启动命令时:
$date = DateTime::createFromFormat("Y-m-d\TH:i:sP", $activity['published']); //$activity['published'] contain the  date
我一直都是FALSE回报.在我看来,问题出在最后一部分
.222Z
在通过一些基本方法削减它之前,任何建议都会受到赞赏......
您不需要使用DateTime::createFromFormat()标准输入.只需使用:
$date = new DateTime('2014-01-22T10:36:00.222Z');
var_dump($date);
但是如果你仍然坚持使用createFromFormat(),那么使用正确的格式,微秒:
$date = DateTime::createFromFormat('Y-m-d\TH:i:s.uP', '2014-01-22T10:36:00.222Z');
var_dump($date);
有一个技巧。一个特殊的常量DATE_RFC3339是为了提供帮助,但如果最后一个字符是“Z”,它就不起作用 - 这对于rfc3339 格式来说完全没问题。实际上 JSON 会指定这样的格式:
expected format YYYY-MM-DDThh:mm:ssZ or YYYY-MM-DDThh:mm:ss+hh:mm
但是使用这个DATE_RFC3339你可能会收到来自 PHP 的错误消息:
InvalidArgumentException: The timezone could not be found in the database
这就是为什么我们需要手动指定格式:
带日期时间
$date = DateTime::createFromFormat ('Y-m-d\TH:i:s.u\Z', $time);
含碳:
\Carbon\Carbon::createFromFormat('Y-m-d\TH:i:s.u\Z', $time);
| 归档时间: | 
 | 
| 查看次数: | 7037 次 | 
| 最近记录: |