#!/usr/bin/perl -- use strict; use warnings; use DateTime::Duration; Main( 4, 250, 1.5e4, 4e5, 3e6, 12e6, 1.5e8 ); Main( 4, 250, 1.5e4, 4e5, 3e6 - 4e5, 12e6, 1.5e8 ); exit(0); sub Main { for my $sec (@_) { printf "%9d seconds is about %s\n", $sec, ToPeriod( seconds => $sec ); } } ## end sub Main sub ToPeriod { my $dur = ( DateTime->now - DateTime->now->subtract(@_) ); for my $unit (qw[ years months weeks days hours minutes seconds nanoseconds ]) { my $nUnit = $dur->in_units($unit); return "$nUnit $unit" if $nUnit; } } ## end sub ToPeriod __END__ 4 seconds is about 4 seconds 250 seconds is about 4 minutes 15000 seconds is about 4 hours 400000 seconds is about 4 days 3000000 seconds is about 1 months 12000000 seconds is about 4 months 150000000 seconds is about 4 years 4 seconds is about 4 seconds 250 seconds is about 4 minutes 15000 seconds is about 4 hours 400000 seconds is about 4 days 2600000 seconds is about 4 weeks 12000000 seconds is about 4 months 150000000 seconds is about 4 years