Я пытаюсь получить доступ к API Новостей Apple «Создать статью» через PHP и получаю следующую ошибку:
{"errors":[{"code":"INVALID_DATE_FORMAT"}]}
Документация запрашивает: «Текущая дата в формате ISO 8601»
Итак, я получаю дату и форматирование так:
$date = date(DateTime::ISO8601);
Что выводит это:
2016-04-26T07:04:53-0700
Но я все еще получаю ошибку. Кто-нибудь знает почему?
Глядя на пример ответов на 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 (Zulu) на конце, вы можете сделать следующее:
$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, а затем при просмотре конвертируйте обратно в местный часовой пояс пользователя.
использование gmdate("Y-m-d\TH:i:s\Z");
или же urlencode(substr(date("c"), 0, 19)."Z";
Быстрый ответ:
date('c', $timestamp);
Проверьте также: что вы предоставляете даты в виде строк, например:
(в вашем файле ANF)
{
....
"dateCreated": "2020-09-08T12:41:00+00:00",
....
}
Проверить Метаданные спецификации для большего количества примеров. Apple будет правильно обрабатывать (и уважать) часовые пояса.
Это можно сделать стандартным использованием функции даты
echo date('Y-m-d\TH:i:sO',time());
Детали, где последняя часть ‘O’ принадлежит часовому поясу, например, ‘-0700’.