This is Bavaria, Germany!
#!/usr/bin/perl
use Date::Calc qw/:all/;
use strict;
use warnings;
my $date = '12.07.2004';
printf "Weekday for '%s' is '%s'\n", $date, &german_weekday($date);
=head2 german_weekday
"Montag" = german_weekday('12.07.2004');
=cut
sub german_weekday {
my $date = shift || die "must get date";
# Return date in german language
Language( Decode_Language("de") );
my ( $d, $m, $y ) = split /\./, $date;
my $wday = Day_of_Week_to_Text( Day_of_Week( $y, $m, $d ) );
return $wday;
}
use Date::Calc;
[...]
sub date_plus_x_days {
# first_day = dd.mm.yyyy (german format)
# return the date in dd.mm.yyyy
my ( $first_day, $plus_days ) = @_;
$first_day =~ /^(\d+).(\d+).(\d+)$/;
my ( $d, $m, $y ) = ( $1, $2, $3 );
my ( $y2, $m2, $d2 ) = Date::Calc::Add_Delta_Days( $y, $m, $d, $plus_days );
return sprintf( "%02d.%02d.%04d", $d2, $m2, $y2 );
}
use Date::Calc;
...
=head2 german_long_date
"6. Januar 2006" = german_long_date(2000,1,6);
Get today's date when omitting numbers:
"10. Januar 2006" = german_long_date();
=cut
sub german_long_date {
my ( $y, $m, $d ) = @_;
unless ( defined $y || defined $m || defined $d ) {
( $y, $m, $d ) = Date::Calc::Today;
}
Date::Calc::Language( Date::Calc::Decode_Language("de") );
return sprintf "%d. %s %d", $d, Date::Calc::Month_to_Text($m), $y;
}