the one in gluon tools does

prettydate(request.now,T)

On Feb 18, 7:49 am, Iceberg <[email protected]> wrote:
> IMHO, the example's code is good, but not cool enough to be put in the
> book. Every programmer saw those ordinary if...elif...elif...else
> cliche in their first program language book before. People can
> probably write their own if...elif...else in less time, than STFW or
> RTFM to find our prettydate().
>
> So, we need some extra flavor to compensate the time a guy spent to
> find our prettydate(). How about making it i18n-friendly? Something
> like this.
>
>   class PrettyDate(object):
>     def __init__(self,T):
>       self.T=T #
>     def __call__(self, d):
>       dt = datetime.now() - d
>       if dt.days >= 2*365:
>         return self.T('%d years ago') % int(dt.days / 365)
>       elif ...:
>         ......
>
> Then, in the model we can initialize an instance by:
>   prettydate = PrettyDate(T)
> In controller we can do:
>   prettydate(d)
> Of course developers need to localize their own language strings in
> their own environment.
>
> Just my $0.02
>
> On Feb16, 1:21pm, Jason Brower <[email protected]> wrote:
>
> > These examples would be a very good edition to the book
> > --
> > J
>
> > On Mon, 2010-02-15 at 16:19 -0800, mdipierro wrote:
> > > for lack of a better option I put it in tools for now.
>
> > > On Feb 15, 5:56 pm, Richard <[email protected]> wrote:
> > > > added a few more cases:
>
> > > > def prettydate(d):
> > > >     try:
> > > >         dt = datetime.now() - d
> > > >     except:
> > > >         return ''
> > > >     if dt.days >= 2*365:
> > > >         return '%d years ago' % int(dt.days / 365)
> > > >     elif dt.days >= 365:
> > > >         return '1 year ago'
> > > >     elif dt.days >= 60:
> > > >         return '%d months ago' % int(dt.days / 30)
> > > >     elif dt.days > 21:
> > > >         return '1 month ago'
> > > >     elif dt.days >= 14:
> > > >         return '%d weeks ago' % int(dt.days / 7)
> > > >     elif dt.days >= 7:
> > > >         return '1 week ago'
> > > >     elif dt.days > 1:
> > > >         return '%d days ago' % dt.days
> > > >     elif dt.days == 1:
> > > >         return '1 day ago'
> > > >     elif dt.seconds >= 2*60*60:
> > > >         return '%d hours ago' % int(dt.seconds / 3600)
> > > >     elif dt.seconds >= 60*60:
> > > >         return '1 hour ago'
> > > >     elif dt.seconds >= 2*60:
> > > >         return '%d minutes ago' % int(dt.seconds / 60)
> > > >     elif dt.seconds >= 60:
> > > >         return '1 minute ago'
> > > >     elif dt.seconds > 1:
> > > >         return '%d seconds ago' % dt.seconds
> > > >     elif dt.seconds == 1:
> > > >         return '1 second ago'
> > > >     else:
> > > >         return 'now'
>
> > > > > On Feb 14, 3:13 pm, selecta <[email protected]> wrote:
>
> > > > > > This is not 100% web2py related but I am sure if this will be 
> > > > > > answered
> > > > > > many of you will profit at some point from it.
>
> > > > > > Is there a python module that helps you to display dates and times
> > > > > > nice e.g.
>
> > > > > > just now (for within the last 5 minutes)
> > > > > > 2 hours ago
> > > > > > 2 days ago
> > > > > > 15th February 2009
> > > > > > ...
>
> > > > > > I guess somebody must have done that already, right?

-- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en.

Reply via email to