in reply to Re^3: Comparing Dates
in thread Comparing Dates

Thanks... I tried it but with $D+1 and $M... Because it is complaining abot month and days not in range... But some how the time diff is showing 0 even after i put different dates... I could see from the log the dates but for both the dates the retuen value is showing up the same??? Any thoughts....

Replies are listed 'Best First'.
Re^5: Comparing Dates
by ikegami (Patriarch) on Mar 13, 2006 at 23:03 UTC

    I tested my code a bit before posting it. For example,
    '03/10/2006 4:39:11 PM' compared to '03/13/2006 4:39:11 PM' was false, while
    '03/10/2006 4:39:11 PM' compared to '03/13/2006 4:39:12 PM' was true.

    Can you give me the exact date strings that are resulting in problems? It sounds like the regexp isn't matching (so all the variables are undefined and treated as 0s).

    Below is my code with a a die statement added to confirm the above:

    sub get_time_from_local_time_string { my ($time_string) = @_; my ($M, $D, $Y, $h, $m, $s, $ampm) = $time_string =~ m{(\d+)/(\d+)/(\d+) (\d+):(\d+):(\d+) (\w+)} or die("Bad input"); if ($h == 12) { $h -= 12 if lc($ampm) eq 'am'; } else { $h += 12 if lc($ampm) eq 'pm'; } return timelocal($s, $m, $h, $D, $M-1, $Y); }
      Yes it is bad data.... I am getting the dates from the database fields and using them. The strings are in this format: 03/22/2006 12:00:00 PM. Thanks

        So did you check your data?

        print get_time_from_local_time_string('03/22/2006 12:00:00 PM');

        prints

        1143046800

        Something you've told us isn't true. Are you sure you are passing to the sub what you think you are passing to the sub? Print it before passing it to the sub.