Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

How to compare time in perl

by abhishes (Friar)
on Feb 08, 2003 at 17:41 UTC ( #233746=perlquestion: print w/replies, xml ) Need Help??
abhishes has asked for the wisdom of the Perl Monks concerning the following question:

Hello Perl Monks!

I am parsing a file where I find strings of the following pattern 2003/02/05 17:32:06.179

I am able to extract the year, month, day, hour, minute, second and millisecond from this string using a regular expression.

But if I have two such strings how to find out which of the two is smaller. Is there a speedy way to compare two such strings for time.

Thanks for your help in advance.


Replies are listed 'Best First'.
Re: How to compare time in perl
by mojotoad (Monsignor) on Feb 08, 2003 at 18:39 UTC
    You don't have to parse the dates. Since the strings are a) constant width and consistently formatted, and b) organized left-to-right in order of granularity, you can simply use a string comparison. Like so:

    #!/usr/bin/perl @data = <DATA>; chomp @data; foreach (sort { $a cmp $b } @data) { print "$_\n"; } __END__ 2003/02/05 17:32:06.179 2003/02/05 17:32:06.159 2003/01/05 17:32:06.179 1999/01/05 17:32:06.179
    When run this prints:
    1999/01/05 17:32:06.179 2003/01/05 17:32:06.179 2003/02/05 17:32:06.159 2003/02/05 17:32:06.179


      The equal width and 0 packing of single digits is vital as this will choke cmp:

      2003/02/05 2:32:06.179 2003/02/05 17:32:06.179 2003/02/05 20:32:06.159



        Even if they aren't to begin with he can normalize them first:
        $time=~s{ #$1 $2 $3 $4 $5 $6 $7 (\d+)/(\d+)/(\d+)\s+(\d+):(\d+):(\d+)\.(\d+) } { sprintf '%04d/%02d/%02d %02d:%02d:%02d.%3d', $1, $2, $3, $4, $5, $6, $7 }xe or die "Failed to normalize '$time'\n";

        --- demerphq
        my friends call me, usually because I'm late....

Re: How to compare time in perl
by valdez (Monsignor) on Feb 08, 2003 at 17:48 UTC

    You can use Date::Calc to parse time strings and compare them.

    Ciao, Valerio

Re: How to compare time in perl
by Nitrox (Chaplain) on Feb 08, 2003 at 17:46 UTC
    Use the site's search to take a peek at existing nodes that cover this.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://233746]
Approved by mattriff
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (2)
As of 2017-07-22 13:49 GMT
Find Nodes?
    Voting Booth?
    I came, I saw, I ...

    Results (339 votes). Check out past polls.