<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Humanizing the time difference ( in django )</title>
	<atom:link href="http://anandnalya.com/2009/05/20/humanizing-the-time-difference-in-django/feed/" rel="self" type="application/rss+xml" />
	<link>http://anandnalya.com/2009/05/20/humanizing-the-time-difference-in-django/</link>
	<description>blog</description>
	<lastBuildDate>Mon, 16 Aug 2010 16:45:53 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: Graham Ullrich</title>
		<link>http://anandnalya.com/2009/05/20/humanizing-the-time-difference-in-django/comment-page-1/#comment-10</link>
		<dc:creator>Graham Ullrich</dc:creator>
		<pubDate>Thu, 11 Jun 2009 04:03:45 +0000</pubDate>
		<guid isPermaLink="false">http://anandnalya.com/?p=70#comment-10</guid>
		<description>Hi Anand,

Thanks for sharing naturalTimeDifference(). I made two changes to improve your code, feel free to share with others. First, if the filter is passed a datetime.timedelta object it uses that instead of calculating datetime.now() - value. Second, with one additional conditional it now says &quot;1 hour ago&quot; for (7200 &gt; delta.seconds &gt;= 3600) and &quot;N hours ago&quot; for delta &gt;= 7200. Small changes for a grammatically correct result.

Here is the updated filter code:

def naturalTimeDifference(value):
    &quot;&quot;&quot;
    Finds the difference between the datetime value given and now()
    and returns appropriate humanize form
    &quot;&quot;&quot;
 
    from datetime import datetime, timedelta
    
    if isinstance(value, timedelta):
        delta = value
    elif isinstance(value, datetime):
        delta = datetime.now() - value
    else:
        delta = None
        
    if delta:
        if delta.days &gt; 6:
            return value.strftime(&quot;%b %d&quot;)                    # May 15
        if delta.days &gt; 1:
            return value.strftime(&quot;%A&quot;)                       # Wednesday
        elif delta.days == 1:
            return &#039;yesterday&#039;                                # yesterday
        elif delta.seconds &gt;= 7200:
            return str(delta.seconds / 3600 ) + &#039; hours ago&#039;  # 3 hours ago
        elif delta.seconds &gt;= 3600:
            return &#039;1 hour ago&#039;                               # 1 hour ago
        elif delta.seconds &gt;  MOMENT:
            return str(delta.seconds/60) + &#039; minutes ago&#039;     # 29 minutes ago
        else:
            return &#039;a moment ago&#039;                             # a moment ago
        return defaultfilters.date(value)
    else:
        return str(value)</description>
		<content:encoded><![CDATA[<p>Hi Anand,</p>
<p>Thanks for sharing naturalTimeDifference(). I made two changes to improve your code, feel free to share with others. First, if the filter is passed a datetime.timedelta object it uses that instead of calculating datetime.now() &#8211; value. Second, with one additional conditional it now says &#8220;1 hour ago&#8221; for (7200 &gt; delta.seconds &gt;= 3600) and &#8220;N hours ago&#8221; for delta &gt;= 7200. Small changes for a grammatically correct result.</p>
<p>Here is the updated filter code:</p>
<p>def naturalTimeDifference(value):<br />
    &#8220;&#8221;"<br />
    Finds the difference between the datetime value given and now()<br />
    and returns appropriate humanize form<br />
    &#8220;&#8221;"</p>
<p>    from datetime import datetime, timedelta</p>
<p>    if isinstance(value, timedelta):<br />
        delta = value<br />
    elif isinstance(value, datetime):<br />
        delta = datetime.now() &#8211; value<br />
    else:<br />
        delta = None</p>
<p>    if delta:<br />
        if delta.days &gt; 6:<br />
            return value.strftime(&#8220;%b %d&#8221;)                    # May 15<br />
        if delta.days &gt; 1:<br />
            return value.strftime(&#8220;%A&#8221;)                       # Wednesday<br />
        elif delta.days == 1:<br />
            return &#8216;yesterday&#8217;                                # yesterday<br />
        elif delta.seconds &gt;= 7200:<br />
            return str(delta.seconds / 3600 ) + &#8216; hours ago&#8217;  # 3 hours ago<br />
        elif delta.seconds &gt;= 3600:<br />
            return &#8217;1 hour ago&#8217;                               # 1 hour ago<br />
        elif delta.seconds &gt;  MOMENT:<br />
            return str(delta.seconds/60) + &#8216; minutes ago&#8217;     # 29 minutes ago<br />
        else:<br />
            return &#8216;a moment ago&#8217;                             # a moment ago<br />
        return defaultfilters.date(value)<br />
    else:<br />
        return str(value)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.878 seconds -->
