Apple News API日期格式PHP

时间:2016-04-26 14:10:19

标签: php date iso8601 apple-news

我正在尝试访问Apple News"创建文章"使用PHP的API,我收到以下错误:

{"errors":[{"code":"INVALID_DATE_FORMAT"}]}

文档要求:" ISO 8601格式的当前日期"

所以,我得到的日期和格式如下:

$date = date(DateTime::ISO8601);

哪个输出:

2016-04-26T07:04:53-0700

但我仍然得到错误。谁知道为什么?

4 个答案:

答案 0 :(得分:3)

查看Apple的Api参考(https://developer.apple.com/library/ios/documentation/General/Conceptual/News_API_Ref/CreateArticle.html#//apple_ref/doc/uid/TP40015409-CH14-SW1)的示例回复,看起来日期格式如下:

2015-03-05T02:57:59Z

注意' Z'最后这意味着祖鲁(a.k.a UTC)因此可能值得将您的日期和时间转换为UTC,如下所示:

$date = (new DateTime)->setTimezone(new DateTimeZone('UTC'))->format(DateTime::ATOM);

如果您肯定要求' Z' (祖鲁人)最后,你可以做到以下几点:

$date = (new DateTime)->setTimezone(new DateTimeZone('UTC'))->format('Y-m-d\TH:i:s\Z');

附注:要加载您自己的日期/时间(而不是现在使用),您可以将代码更改为:

$date = (new DateTime($yourDateTimeString))->setTimezone(new DateTimeZone('UTC'))->format('Y-m-d\TH:i:s\Z');

e.g。

$date = (new DateTime('2016-01-01 00:00:00 +0400'))->setTimezone(new DateTimeZone('UTC'))->format('Y-m-d\TH:i:s\Z');

请注意!如果您要创建DateTime对象,请确保它知道您的原始时区。否则转换为UTC将无效,Apple的Api将把您的时间作为UTC,而不是您当地的时区。作为一般经验法则,始终将日期存储为UTC,然后在查看时转换回用户的本地时区。

答案 1 :(得分:1)

使用gmdate("Y-m-d\TH:i:s\Z");urlencode(substr(date("c"), 0, 19)."Z";

答案 2 :(得分:0)

快速回答:

date('c', $timestamp);

另外检查:您将日期作为字符串提供,例如:

(在你的ANF文件中)

{
  ....
  "dateCreated": "2020-09-08T12:41:00+00:00",
  ....
}

查看Metadata spec以获取更多示例。 Apple将正确处理(并尊重)时区。

答案 3 :(得分:0)

可以通过日期功能的标准使用来完成

echo date('Y-m-d\TH:i:sO',time());

详细说明' O'的最后部分属于时区,例如' -0700'。