1

PHP で Apple News の「Create Article」API にアクセスしようとすると、次のエラーが発生します。

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

ドキュメントは次のように求めています:「ISO 8601形式の現在の日付」

だから、私はこのように日付とフォーマットを取得しています:

$date = date(DateTime::ISO8601);

これは次のように出力されます:

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

しかし、私はまだエラーが発生しています。理由を知っている人はいますか?

4

4 に答える 4

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」は Zulu (別名 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 として保存し、表示するときにユーザーのローカル タイムゾーンに戻します。

于 2016-04-26T14:29:42.210 に答える
1

gmdate("Y-m-d\TH:i:s\Z");または_urlencode(substr(date("c"), 0, 19)."Z";

于 2016-04-26T14:21:43.607 に答える
0

素早い回答:

date('c', $timestamp);

また、日付を文字列として提供していることも確認してください。

(ANF ファイル内)

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

その他の例については、メタデータの仕様を確認してください。Apple はタイムゾーンを適切に処理 (および尊重) します。

于 2016-05-31T07:08:04.177 に答える
0

日付関数の標準的な使用で実行できます

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

「-0700」など、「O」の最後の部分がタイムゾーンに属する詳細。

于 2016-06-16T08:39:18.483 に答える