[pLog-svn] r2415 - in plog/branches/plog-1.0.2: class/locale templates/rss

Paul Westbrook paul at westbrooks.org
Fri Aug 19 16:34:22 GMT 2005


Hello,
    This works for me.  My server is in the same time zone as me, so  
my offset is 0.  The dates are reported with the -0700 offset, which  
is correct for PST now.

    When I changed the offset, the times changed to reflect that  
timezone, and the timezone offset also changed correctly.  What  
offset are you using?  What offset is being added to the dates in the  
rss feed?  It should be -0400 for EDT.

    The DST bug will only be a problem when the time that is being  
formatted is across a DST boundary.


--Paul


On Aug 19, 2005, at 5:02 AM, Jon Daley wrote:

>     Does this work for you?  It appears to do pretty strange things  
> for me.
>     Server is in same timezone as me. EST.
>
>     Posts show correct time, RSS feed show DST bug that you mention.
>
>     I thought I would try adding a +1 to see what that did to the  
> DST bug.  The post times went ahead 2 hours, RSS feeds stayed the  
> same!!?
>
>
> On Fri, 19 Aug 2005, pwestbro at devel.plogworld.net wrote:
>
>
>> Author: pwestbro
>> Date: 2005-08-19 07:20:20 +0000 (Fri, 19 Aug 2005)
>> New Revision: 2415
>>
>> Modified:
>>   plog/branches/plog-1.0.2/class/locale/locale.class.php
>>   plog/branches/plog-1.0.2/templates/rss/atom.template
>>   plog/branches/plog-1.0.2/templates/rss/rss090.template
>>   plog/branches/plog-1.0.2/templates/rss/rss20.template
>> Log:
>> Fixed the last part of bug http://bugs.plogworld.net/view.php?id=442
>>
>> Now the dates are output in local time of the poster, and not the  
>> server.
>> If the blog info is passed into formatDate, the timeoffset is used to
>> correct the time zone offset.  Printing the dates in local time  
>> zone, allow
>> additional information to be available, that is lost when  
>> converting to GMT.
>>
>> There may still be a problem when dealing with the boundary with  
>> daylight
>> saving time.  If the current date has DST in effect, and the post  
>> date does
>> not, the time zone offset may be incorrect.  This could  
>> potentially be
>> solved by passing the date that is being parsed into the date("Z")  
>> call.
>> The documentation doesn't say what happens in this case.
>>
>> Also, fixed a mistake in my last checkin.  There was a conditional  
>> that was
>> always true, so I just removed the conditional
>>
>>
>> Modified: plog/branches/plog-1.0.2/class/locale/locale.class.php
>> ===================================================================
>> --- plog/branches/plog-1.0.2/class/locale/locale.class.php     
>> 2005-08-18 21:12:48 UTC (rev 2414)
>> +++ plog/branches/plog-1.0.2/class/locale/locale.class.php     
>> 2005-08-19 07:20:20 UTC (rev 2415)
>> @@ -475,6 +475,7 @@
>>          * <li>%S    seconds</li>
>>          * <li>%y    2-digit year representation</li>
>>          * <li>%Y    4-digit year representation</li>
>> +         * <li>%O   Difference to Greenwich time (GMT) in hours</li>
>>          * <li>%%    the '%' character
>>          * </ul>
>>          * (these have been added by myself and are therefore  
>> incompatible with php)<ul>
>> @@ -482,7 +483,7 @@
>>          * <li>%D    cardinal representation of the day</li>
>>          * </ul>
>>          */
>> -        function formatDate( $timeStamp, $format = null )
>> +        function formatDate( $timeStamp, $format = null, $blog =  
>> null )
>>         {
>>             // load the file if it hadn't been loaded yet
>>             if( !is_array($this->_messages))
>> @@ -496,6 +497,26 @@
>>             // and the same for the weekdays
>>             $weekdayId = $timeStamp->getWeekdayId();
>>             $weekday = $this->_messages["days"][$weekdayId];
>> +
>> +            // Get the time zone offset for the server
>> +            $timeZoneSec = date("Z");
>> +            if ( $blog ) {
>> +                //
>> +                // The blog was specified.  Use it to get the  
>> time offset
>> +                //
>> +                $timeDiff = 0;
>> +                $blogSettings = $blog->getSettings();
>> +                $timeDiff = $blogSettings->getValue 
>> ( 'time_offset' );
>> +
>> +                // The following line relies on the fact that the  
>> result will
>> +                // be an int.
>> +                $timeZoneSec += ( $timeDiff * 3600 );
>> +            }
>> +            // Now convert the time zone seconds to hours and  
>> minutes
>> +            $timeZoneHours = intval( abs($timeZoneSec) / 3600 );
>> +            $timeZoneMins = intval(( abs($timeZoneSec) % 3600 ) /  
>> 60 );
>> +            $timeZoneDirection = ($timeZoneSec < 0 ) ? "-" : "+";
>> +
>>
>>             // if the user did not specify a format, let's use the  
>> default one
>>             if( $format == null )
>> @@ -518,6 +539,7 @@
>>             $values["%S"] = $timeStamp->getSeconds();
>>             $values["%y"] = substr($timeStamp->getYear(), 2, 4 );
>>             $values["%Y"] = $timeStamp->getYear();
>> +            $values["%O"] = sprintf( "%s%02d%02d",  
>> $timeZoneDirection, $timeZoneHours, $timeZoneMins );
>>             $values["%%"] = "%";
>>             $values["%T"] = $this->getDayOrdinal( $timeStamp )." ". 
>> $this->tr("of")." ".$monthStr;
>>             $values["%D"] = $this->getDayOrdinal( $timeStamp );
>> @@ -561,6 +583,7 @@
>>          * <li>%S    seconds</li>
>>          * <li>%y    2-digit year representation</li>
>>          * <li>%Y    4-digit year representation</li>
>> +         * <li>%O   Difference to Greenwich time (GMT) in hours  
>> (Will always be +0000)</li>
>>          * <li>%%    the '%' character
>>          * </ul>
>>          * (these have been added by myself and are therefore  
>> incompatible with php)<ul>
>> @@ -579,11 +602,9 @@
>>                 // The blog was specified.  Use it to get the time  
>> offset
>>                 //
>>                 $timeDiff = 0;
>> -                if( $this->_blogInfo == null ) {
>> -                    $blogSettings = $blog->getSettings();
>> -                    $timeDiff = $blogSettings->getValue 
>> ( 'time_offset' );
>> -                    $timeDiff *= -1;
>> -                }
>> +                $blogSettings = $blog->getSettings();
>> +                $timeDiff = $blogSettings->getValue 
>> ( 'time_offset' );
>> +                $timeDiff *= -1;
>>
>>                 if( $timeDiff > 0 )
>>                     $timeStamp->addSeconds( $timeDiff * 3600 );
>> @@ -639,6 +660,7 @@
>>             $values["%S"] = gmdate( "s", $time );
>>             $values["%y"] = gmdate( "y", $time );
>>             $values["%Y"] = gmdate( "Y", $time );
>> +            $values["%O"] = "+0000";
>>             $values["%%"] = "%";
>>             $values["%T"] = $this->getDateOrdinal( gmdate( "d",  
>> $time ) )." ".$this->tr("of")." ".$monthStr;
>>             $values["%D"] = $this->getDateOrdinal( gmdate( "d",  
>> $time )  );
>>
>> Modified: plog/branches/plog-1.0.2/templates/rss/atom.template
>> ===================================================================
>> --- plog/branches/plog-1.0.2/templates/rss/atom.template     
>> 2005-08-18 21:12:48 UTC (rev 2414)
>> +++ plog/branches/plog-1.0.2/templates/rss/atom.template     
>> 2005-08-19 07:20:20 UTC (rev 2415)
>> @@ -3,7 +3,7 @@
>> <title>{$blog->getBlog()|escape}</title>
>> <link rel="alternate" type="text/html" href="{$url->blogLink()}" />
>> {assign var="newestDate" value=$posts[0]->getDateObject()}
>> -<modified>{$locale->formatDateGMT($newestDate, "%Y-%m-%dT%H:%M:% 
>> S-00:00", $blog)}</modified>
>> +<modified>{$locale->formatDate($newestDate, "%Y-%m-%dT%H:%M:%S% 
>> O", $blog)}</modified>
>> <tagline>{$blog->getAbout()|escape}</tagline>
>> <generator url="http://www.plogworld.net/" version="1.0.1">pLog</ 
>> generator>
>> {assign var="blogOwner" value=$posts[0]->getUserInfo()}
>> @@ -14,9 +14,9 @@
>>  <title>{$post->getTopic()|escape}</title>
>>  <link rel="alternate" type="text/html" href="{$url->postPermalink 
>> ($post)}" />
>>  {assign var="postDate" value=$post->getDateObject()}
>> - <modified>{$locale->formatDateGMT($postDate, "%Y-%m-%dT%H:%M:% 
>> S-00:00", $blog)}</modified>
>> - <issued>{$locale->formatDateGMT($postDate, "%Y-%m-%dT%H:%M:% 
>> S-00:00", $blog)}</issued>
>> - <created>{$locale->formatDateGMT($postDate, "%Y-%m-%dT%H:%M:% 
>> S-00:00", $blog)}</created>
>> + <modified>{$locale->formatDate($postDate, "%Y-%m-%dT%H:%M:%S%O",  
>> $blog)}</modified>
>> + <issued>{$locale->formatDate($postDate, "%Y-%m-%dT%H:%M:%S%O",  
>> $blog)}</issued>
>> + <created>{$locale->formatDate($postDate, "%Y-%m-%dT%H:%M:%S%O",  
>> $blog)}</created>
>>  <summary type="text/plain">{$post->getText()|strip_tags|truncate: 
>> 200:" ..."|escape:"html"}</summary>
>>  <author>
>>  {assign var="postOwner" value=$post->getUserInfo()}
>>
>> Modified: plog/branches/plog-1.0.2/templates/rss/rss090.template
>> ===================================================================
>> --- plog/branches/plog-1.0.2/templates/rss/rss090.template     
>> 2005-08-18 21:12:48 UTC (rev 2414)
>> +++ plog/branches/plog-1.0.2/templates/rss/rss090.template     
>> 2005-08-19 07:20:20 UTC (rev 2415)
>> @@ -16,7 +16,7 @@
>>    <description>{$post->getText()|escape}</description>
>>    <link>{$url->postPermalink($post)}</link>
>>    {assign var="postDate" value=$post->getDateObject()}
>> -   <pubDate>{$locale->formatDateGMT($postDate, "%a, %d %b %Y %H:% 
>> M:%S GMT", $blog)}</pubDate>
>> +   <pubDate>{$locale->formatDate($postDate, "%a, %d %b %Y %H:%M:% 
>> S %O", $blog)}</pubDate>
>>   </item>
>>   {/foreach}
>> </rdf:RDF>
>>
>> Modified: plog/branches/plog-1.0.2/templates/rss/rss20.template
>> ===================================================================
>> --- plog/branches/plog-1.0.2/templates/rss/rss20.template     
>> 2005-08-18 21:12:48 UTC (rev 2414)
>> +++ plog/branches/plog-1.0.2/templates/rss/rss20.template     
>> 2005-08-19 07:20:20 UTC (rev 2415)
>> @@ -9,7 +9,7 @@
>>   <title>{$blog->getBlog()|escape}</title>
>>   <link>{$url->blogLink()}</link>
>>   <description>{$blog->getAbout()|escape}</description>
>> -  <pubDate>{$locale->formatDateGMT($now, "%a, %d %b %Y %H:%M:%S  
>> GMT")}</pubDate>
>> +  <pubDate>{$locale->formatDate($now, "%a, %d %b %Y %H:%M:%S %O")} 
>> </pubDate>
>>   <generator>http://www.plogworld.net</generator>
>>   {foreach from=$posts item=post}
>>   <item>
>> @@ -26,7 +26,7 @@
>>     <category>{$category->getName()|escape}</category>
>>    {/foreach}
>>    {assign var="postDate" value=$post->getDateObject()}
>> -   <pubDate>{$locale->formatDateGMT($postDate, "%a, %d %b %Y %H:% 
>> M:%S GMT", $blog)}</pubDate>
>> +   <pubDate>{$locale->formatDate($postDate, "%a, %d %b %Y %H:%M:% 
>> S %O", $blog)}</pubDate>
>>    <source url="{$url->rssLink("rss20")}">{$blog->getBlog()|escape} 
>> </source>
>>    {foreach from=$post->getArticleResources() item=resource}
>>     {** please uncomment the line below if you'd like to server  
>> everything but images, instead of
>>
>> _______________________________________________
>> pLog-svn mailing list
>> pLog-svn at devel.plogworld.net
>> http://devel.plogworld.net/mailman/listinfo/plog-svn
>>
>>
>
> **************************************************************
> *                           *  The reason houses are made of *
> *         Jon Daley         *    brick instead of aluminum   *
> *                           *       foil is the thermal      *
> * http://jon.limedaley.com/ *          diffusivity.          *
> *                           *          -- Professor Shaeffer *
> **************************************************************
> _______________________________________________
> pLog-svn mailing list
> pLog-svn at devel.plogworld.net
> http://devel.plogworld.net/mailman/listinfo/plog-svn
>
>

--
Paul Westbrook
paul at westbrooks.org
<http://www.westbrooks.org>


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2367 bytes
Desc: not available
Url : http://www.plogworld.net/pipermail/plog-svn/attachments/20050819/526534bd/smime.bin


More information about the pLog-svn mailing list