【问题标题】:Apple News API Date Format PHPApple News API 日期格式 PHP
【发布时间】:2016-04-26 14:10:18
【问题描述】:

我正在尝试使用 PHP 访问 Apple News“创建文章”API,但出现以下错误:

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

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

所以,我得到这样的日期和格式:

$date = date(DateTime::ISO8601);

输出这个:

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

但我仍然收到错误消息。有谁知道为什么?

【问题讨论】:

    标签: php date iso8601 apple-news


    【解决方案1】:

    查看 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”表示祖鲁语(又名 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');
    

    例如

    $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,然后在查看时转换回用户的本地时区。

    【讨论】:

    • 谢谢!如果我得到这样的日期,你有一个例子吗? $date = date(DateTime::ISO8601);我应该换一种方式吗?当我尝试将其转换为 UTC 时,它说我无法格式化非对象。
    【解决方案2】:

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

    【讨论】:

    • 这些选项都不起作用 - 仍然出现同样的错误。
    • 也许只是 date('c') 会起作用,但正如 API 中的下一个答案日期中提到的那样,看起来像 2015-03-05T02:57:59Z 它正是 gmdate("Y-m-d\TH:i:s\Z");
    【解决方案3】:

    快速回答:

    date('c', $timestamp);
    

    还要检查:您是否以字符串形式提供日期,例如:

    (在您的 ANF 文件中)

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

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

    【讨论】:

      【解决方案4】:

      可以通过标准使用日期函数来完成

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

      “O”的最后一部分属于时区的详细信息,例如“-0700”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 2013-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-25
        相关资源
        最近更新 更多