use Date::Calc qw/Decode_Language Language Month_to_Text/; foreach my $lang (qw/English Français Deutsch Español Português Nederlands Italiano Norsk Svenska Dansk suomi Magyar Polski/){ Language( Decode_Language( $lang ) ); printf "%10s: %s\n", $lang, Month_to_Text( 12 ); }
How much longer do we have to wait?!?
use Date::Calc qw/Today Delta_Days/; printf "Christmas is %d days away", Delta_Days( Today(), 2006, 12, 25 );
What if it's after 2006-12-25? What about 'next' Christmas, no matter what the current year is?
use Date::Calc qw/Today Delta_Days Add_Delta_YMD/; my @next_Christmas = ( (Today)[0], 12, 25 ); if( Delta_Days( Today(), @next_Christmas ) < 0 ){ # in case we past this year's holiday already, e.g. it's 12/28 @next_Christmas = Add_Delta_YMD( @next_Christmas, 1, 0, 0 ); } printf "Christmas is %d days away", Delta_Days( Today(), @next_Christmas );
$ perl -MDate::Calc=:all -e 'printf "%04d%02d%02d", Monday_of_Week( Week_of_Year(Today) )'You can also verify that a date is well formed:
use Date::Calc qw/check_date/; my $s = '2006-12-01'; print "OK" if check_date( split(/-/,$s) );And even produce a cal like calendar (single month mode only):
$ perl -MDate::Calc=:all -e 'print Calendar( 2006, 12 )' December 2006 Mon Tue Wed Thu Fri Sat Sun 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Better than fruitcake or mincemeat pie are the 17 recipes included in the Date::Calc documentation, covering topics such as printing dates as strings (e.g. 'Monday, December 25th, 2006'), checking someone's age, finding a pay date, converting a MS Visual Basic "DATETIME" value, and working with date ranges.