{"id":522,"date":"2006-10-16T14:42:20","date_gmt":"2006-10-16T06:42:20","guid":{"rendered":"http:\/\/www.nargalzius.com\/blog2\/http:\/www.nargalzius.com\/blog2\/archives\/2006\/10\/2006_10_16_1442.php"},"modified":"2006-10-16T14:42:20","modified_gmt":"2006-10-16T06:42:20","slug":"rss-timezone-problems","status":"publish","type":"post","link":"http:\/\/nargalzius.com\/blog\/archives\/2006\/10\/16\/rss-timezone-problems","title":{"rendered":"RSS timezone problems"},"content":{"rendered":"<p><a href=\"http:\/\/littletimoune.livejournal.com\" title=\"view blog\">Jowi<\/a> pointed out that my RSS feed would behave strangely with NetNewsWire. All my posts register as being 8 hours into the future. If I posted something at 1pm, it shows up 9-ish on the reader.<\/p>\n<p>I&#8217;m using the Atom 2.0 spec and while my time-stamp syntax is correct &#8211; the reader doesn&#8217;t seem to handle it correctly. This is really irritating because is only evident with my Atom 2.0 RSS feed &#8211; the pages in the site itself still display the right local time.<\/p>\n<!--more-->\n<p>A typical comprehensive time-stamp for Atom 2.0 is:<\/p>\n<p><code>2006-10-14T13:01:07+08:00<\/code> (year-month-day<code>T<\/code>hour:minute:second<code>timeoffset<\/code> &#8211; in this case it&#8217;s +8:00)<\/p>\n<p>I tried it in NetNewsWire <em>and<\/em> via Firefox&#8217;s Sage extension and both had the same problem.\nNormally, the reader(s) <em>should<\/em> be able to know wether or not to apply an offset. This apparently isn&#8217;t the case. Since my syntax is correct, I&#8217;m led to believe that there has been some kind of oversight in the implementation of Atom 2.0 across a bunch of readers.<\/p>\n<p>I took a look at a typical LiveJournal feed and noticed that while my reader interprets the dates of my friends&#8217; feeds correctly with the local time. All their feeds are published in <code>GMT<\/code> <span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_522_1('footnote_plugin_reference_522_1_1');\" onkeypress=\"footnote_moveToReference_522_1('footnote_plugin_reference_522_1_1');\" ><sup id=\"footnote_plugin_tooltip_522_1_1\" class=\"footnote_plugin_tooltip_text\">1 <\/sup><\/a><span id=\"footnote_plugin_tooltip_text_522_1_1\" class=\"footnote_tooltip\">Greenwich Mean Time<\/span><\/span><script type=\"text\/javascript\"> jQuery('#footnote_plugin_tooltip_522_1_1').tooltip({ tip: '#footnote_plugin_tooltip_text_522_1_1', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top right', relative: true, offset: [10, 10], });<\/script> This lead me to believe that while it <em>does<\/em> support timezone settings to some extent, it may be only limited to &#8220;globally recognized&#8221; timezones (e.g. GMT) and not manual offsets.<\/p>\n<p>Just to be sure, I tried doing the feed via <code>PHP<\/code> where it would convert my posts&#8217; timestamps into <code>GMT<\/code> before publishing to <code>XML<\/code> &#8211; sure enough, the timezone issues were corrected. Which really ticked me off, why <strong>can<\/strong> it apply a proper offset based from <code>GMT<\/code> and the like, but <strong>can&#8217;t<\/strong> when you simply specify the offset needed. Definitely a bug in readers.<\/p>\n<p>Of course this didn&#8217;t mean I could just <em>change<\/em> my blog&#8217;s timezone setting to <code>GMT<\/code>, as it will probably fix the feed, but break the pages (which were working fine)<\/p>\n<p>I checked other blogs that used manual offset syntax (e.g. <code>+\/-HH:SS<\/code> or <code>+\/-HHSS<\/code>) and was able to find those which work. And apparently, the readers could apply offsets properly when you&#8217;re using the <code>RSS 2.0<\/code> <span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_522_1('footnote_plugin_reference_522_1_2');\" onkeypress=\"footnote_moveToReference_522_1('footnote_plugin_reference_522_1_2');\" ><sup id=\"footnote_plugin_tooltip_522_1_2\" class=\"footnote_plugin_tooltip_text\">2 <\/sup><\/a><span id=\"footnote_plugin_tooltip_text_522_1_2\" class=\"footnote_tooltip\">Which has a different date formatting syntax<\/span><\/span><script type=\"text\/javascript\"> jQuery('#footnote_plugin_tooltip_522_1_2').tooltip({ tip: '#footnote_plugin_tooltip_text_522_1_2', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top right', relative: true, offset: [10, 10], });<\/script> spec.<\/p>\n<p>Long story short, I just had to leave Atom 2.0 for the meantime &#8211; and convert my feed into <code>RSS 2.0<\/code> format.<\/p>\n<p>Everything should be fine now.<\/p><div class=\"speaker-mute footnotes_reference_container\"> <div class=\"footnote_container_prepare\"><p><span role=\"button\" tabindex=\"0\" class=\"footnote_reference_container_label pointer\" onclick=\"footnote_expand_collapse_reference_container_522_1();\">Notes<\/span><span role=\"button\" tabindex=\"0\" class=\"footnote_reference_container_collapse_button\" style=\"display: none;\" onclick=\"footnote_expand_collapse_reference_container_522_1();\">[<a id=\"footnote_reference_container_collapse_button_522_1\">+<\/a>]<\/span><\/p><\/div> <div id=\"footnote_references_container_522_1\" style=\"\"><table class=\"footnotes_table footnote-reference-container\"><caption class=\"accessibility\">Notes<\/caption> <tbody> \r\n\r\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\"  onclick=\"footnote_moveToAnchor_522_1('footnote_plugin_tooltip_522_1_1');\"><a id=\"footnote_plugin_reference_522_1_1\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">&#8673;<\/span>1<\/a><\/th> <td class=\"footnote_plugin_text\">Greenwich Mean Time<\/td><\/tr>\r\n\r\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\"  onclick=\"footnote_moveToAnchor_522_1('footnote_plugin_tooltip_522_1_2');\"><a id=\"footnote_plugin_reference_522_1_2\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">&#8673;<\/span>2<\/a><\/th> <td class=\"footnote_plugin_text\">Which has a different date formatting syntax<\/td><\/tr>\r\n\r\n <\/tbody> <\/table> <\/div><\/div><script type=\"text\/javascript\"> function footnote_expand_reference_container_522_1() { jQuery('#footnote_references_container_522_1').show(); jQuery('#footnote_reference_container_collapse_button_522_1').text('\u2212'); } function footnote_collapse_reference_container_522_1() { jQuery('#footnote_references_container_522_1').hide(); jQuery('#footnote_reference_container_collapse_button_522_1').text('+'); } function footnote_expand_collapse_reference_container_522_1() { if (jQuery('#footnote_references_container_522_1').is(':hidden')) { footnote_expand_reference_container_522_1(); } else { footnote_collapse_reference_container_522_1(); } } function footnote_moveToReference_522_1(p_str_TargetID) { footnote_expand_reference_container_522_1(); var l_obj_Target = jQuery('#' + p_str_TargetID); if (l_obj_Target.length) { jQuery( 'html, body' ).delay( 0 ); jQuery('html, body').animate({ scrollTop: l_obj_Target.offset().top - window.innerHeight * 0.2 }, 380); } } function footnote_moveToAnchor_522_1(p_str_TargetID) { footnote_expand_reference_container_522_1(); var l_obj_Target = jQuery('#' + p_str_TargetID); if (l_obj_Target.length) { jQuery( 'html, body' ).delay( 0 ); jQuery('html, body').animate({ scrollTop: l_obj_Target.offset().top - window.innerHeight * 0.2 }, 380); } }<\/script>","protected":false},"excerpt":{"rendered":"<p>Jowi pointed out that my RSS feed would behave strangely with NetNewsWire. All my posts register as being 8 hours into the future. If I posted something at 1pm, it shows up 9-ish on the reader. I&#8217;m using the Atom 2.0 spec and while my time-stamp syntax is correct &#8211; the reader doesn&#8217;t seem to &hellip; <p class=\"link-more\"><a href=\"http:\/\/nargalzius.com\/blog\/archives\/2006\/10\/16\/rss-timezone-problems\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;RSS timezone problems&#8221;<\/span><\/a><\/p><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[5,9,13],"tags":[1025,1180],"class_list":["post-522","post","type-post","status-publish","format-standard","hentry","category-internet","category-nargalzius","category-technology","tag-rss","tag-timezone"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/posts\/522","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/comments?post=522"}],"version-history":[{"count":0,"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/posts\/522\/revisions"}],"wp:attachment":[{"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/media?parent=522"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/categories?post=522"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/tags?post=522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}