[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 164
  • Last Modified:

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
0
kplonk
Asked:
kplonk
  • 2
1 Solution
 
bebonhamCommented:
#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
 
bebonhamCommented:
actually, no, since perl is so flexable, it will return the greatest

1/2/3

3 ranked highest
then 1
then 2

0
 
ozoCommented:
return $yeara <=> $yearb or $montha <=> $monthb or $daya <=> $dayb;

#or

return (join'',reverse split'/',$a) cmp (join'',reverse split'/',$b);
0
 
kplonkAuthor Commented:
Just th job
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now