# How to comput the date

I have a date string like this

dd/mm/yyyy

and i need to be able to do computations on it, such as is this date newer than this one

both dates are strings in the above format

how do i do this in perl
###### Who is Participating?

Commented:
#a non module idea for such specific strings
#note pretty, but pretty fast

###just to show it works
chomp(\$date=<STDIN>);  #for dates greater than 1999
chomp(\$futureDate=<STDIN>);
chomp(\$pastDate=<STDIN>);
print cmpDate(\$date,\$futureDate);
print "\n" . cmpDate(\$date, \$pastDate);
print "\n" . cmpDate(\$futureDate, \$date);
####

###this is the real function

sub cmpDate  #returns 1 for 2nd arg is greater, == 0, < -1
{
my(\$a,\$b)=@_;
my(\$daya,\$montha,\$yeara)=split('/', \$a);
my(\$dayb,\$monthb,\$yearb)=split('/', \$b);
if(\$yeara>\$yearb){ return -1};
if(\$yeara<\$yearb){ return 1};
if(\$montha>\$monthb){ return -1};
if(\$montha<\$monthb){ return 1};
if(\$daya>\$dayb){ return -1};
if(\$daya<\$dayb){ return 1};
return 0;  #careful, returns 0 on error as well.
}
######
0

Commented:
actually, no, since perl is so flexable, it will return the greatest

1/2/3

3 ranked highest
then 1
then 2

0

Commented:
return \$yeara <=> \$yearb or \$montha <=> \$monthb or \$daya <=> \$dayb;

#or

return (join'',reverse split'/',\$a) cmp (join'',reverse split'/',\$b);
0

Author Commented:
Just th job
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.