RFC-822 формат даты и времени в RSS-каналах 2.0: CET не принимается?
[обновление с рабочим раствором] У меня есть rss-канал, который отображается правильно в RSS-клиентах, но при проверке http://feedvalidator.org я получаю эту ошибку:
pubDate must be an RFC-822 date-time
моя дата отформатирована следующим образом:
Wed, 27 Feb 2013 17:18:15 CET
есть идеи, что может быть не так? Может, это часовой пояс?
решение
благодаря Calum я получил действительный RSS-канал сейчас. Причина была CET
не поддержал в pubDate
.
следующий код Java теперь работает нормально:
String pubDate = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z").format(new Date());
2 ответов
RFC указывает, что он поддерживает только очень ограниченный набор символических имен часовых поясов; только UTC и US:
zone = "UT" / "GMT" ; Universal Time
; North American : UT
/ "EST" / "EDT" ; Eastern: - 5/ - 4
/ "CST" / "CDT" ; Central: - 6/ - 5
/ "MST" / "MDT" ; Mountain: - 7/ - 6
/ "PST" / "PDT" ; Pacific: - 8/ - 7
/ 1ALPHA ; Military: Z = UT;
; A:-1; (J not used)
; M:-12; N:+1; Y:+12
/ ( ("+" / "-") 4DIGIT ) ; Local differential
; hours+min. (HHMM)
вероятно, вам нужно указать в качестве смещения в UTC.
поскольку вы говорите, что используете Java, это выглядит как SimpleDateFormat даст вам дату, совместимую с RFC-822, если вы используете Z
для форматирования зоны в формате времени (а не z
).
вы должны использовать Z
для форматирования часового пояса как Калум сказал, но не забудьте указать Locale
тоже, иначе он не будет работать, если на компьютер не на английском языке...
вот мой рабочий код :
new SimpleDateFormat("E, d MMM yyyy HH:mm:ss Z", Locale.US).format(new Date());