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());