my $t = Time::Piece->strptime("Sun 3rd Nov, 1943",
"%A %drd %b, %Y");
print $t->strftime("%a, %d %b %Y");
Outputs:
Wed, 03 Nov 1943
(see, it's even smart enough to fix my obvious date bug)
####
use strict;
use warnings;
use Time::Piece;
my $format = "%d-%m-%Y";
while (my $date = ) {
chomp $date;
printf("%s %s legitimate\n", $date,
(verify_date($date, $format) ? "is" : "is not"),
);
}
sub verify_date {
my ($date_in, $format) = @_;
my $t = Time::Piece->strptime($date_in, $format);
my $date_out = $t->strftime($format);
return $date_in eq $date_out ? 1 : 0;
}
__DATA__
28-02-2004
29-02-2004
30-02-2004
28-02-2006
29-02-2006
30-02-2006
####
28-02-2004 is legitimate
29-02-2004 is legitimate
30-02-2004 is not legitimate
28-02-2006 is legitimate
29-02-2006 is not legitimate
30-02-2006 is not legitimate