DateTime::Duration::Fuzzy -- express dates as fuzzy human-friendly strings
use DateTime::Duration::Fuzzy qw(time_ago); use DateTime; my $now = DateTime->new( year => 2010, month => 12, day => 12, hour => 19, minute => 59, ); my $then = DateTime->new( year => 2010, month => 12, day => 12, hour => 15, ); print time_ago($then, $now); # outputs 'several hours ago' print time_ago($then); # $now taken from C<time> function
DateTime::Duration::Fuzzy is inspired from the timeAgo jQuery module http://timeago.yarp.com/.
It takes two DateTime objects -- first one representing a moment in the past and second optional one representine the present, and returns a human-friendly fuzzy expression of the time gone.
- time_ago($then, $now)
The only exportable function.
First obligatory parameter is a DateTime object.
Second optional parameter is also a DateTime object. If it's not provided, then now as the
timefunction returns is substituted.
Returns a string expression of the interval between the two DateTime objects, like
several hours ago,
yesterdayor <last century>.
On 64bit machines, it is asvisable to 'use integer', which makes the calculations faster. You can turn this on by setting the
ARCH_64BIT environmental variable to a true value.
If you do this on a 32bit machine, you will get wrong results for intervals starting with "several decades ago".
Jan Oldrich Kruza,
<sixtease at cpan.org>
Copyright 2010 Jan Oldrich Kruza.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.