Jan Oldřich Krůza


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 time function returns is substituted.

Returns a string expression of the interval between the two DateTime objects, like several hours ago, yesterday or <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.