#!/usr/bin/perl -w use strict; use warnings; use Date::Calc qw{ :all }; my ($year, $mon, $day) = Today(); show_date("Today's date", $year, $mon, $day); ($year, $mon, $day) = Add_Delta_Days($year, $mon, $day, -30); show_date("30 days ago", $year, $mon, $day); sub show_date { my ($label, $year, $mon, $day) = @_; my $date = sprintf "%04d-%02d-%02d", $year, $mon, $day; print "$label: $date\n"; } __END__ [Output] Today's date: 2013-06-07 30 days ago: 2013-05-08 #### $date[3] -= 4 * 7; ... my $month_ago_3 = strftime('%Y-%m-%d', localtime(time - 4 * 7 * 86400));