Sponsored Content
Full Discussion: compare two dates
Top Forums Shell Programming and Scripting compare two dates Post 30642 by lusername on Thursday 24th of October 2002 04:39:46 PM
Old 10-24-2002
Here is a Perl routine that can tell if two dates, formatted as in your file, are within six hours of each other, so long as the dates are all within the 21st century:
Code:
#!/usr/bin/perl

use POSIX;
use strict;

my %months;

$months{"jan"} = 0;
$months{"feb"} = 1;
$months{"mar"} = 2;
$months{"apr"} = 3;
$months{"may"} = 4;
$months{"jun"} = 5;
$months{"jul"} = 6;
$months{"aug"} = 7;
$months{"sep"} = 8;
$months{"oct"} = 9;
$months{"nov"} = 10;
$months{"dec"} = 11;

# are_dates_within_six_hours - Determine if two dates are within six hours
#
# usage: $boolean = are_dates_within_six_hours($date1, $date2);
#
# This function determines if two dates are within six hours of each
# other, and returns 1 or 0 accordingly.
#
# The dates are formatted as follows:
#
#    DD-Mnt-YY HH:MM:SS
#
#
# Which date is later or earlier does not matter.


sub are_dates_within_six_hours
{
        my ($date1, $date2) = @_;
        my @times;

        foreach($date1, $date2)
        {
                # Parse the date.
                my $day;
                my $month;
                my $year;
                my $hour;
                my $min;
                my $sec;

                if($_ =~ /(\d*)-([[:alpha:]]*)-(\d*)\s*(\d*):(\d*):(\d*)/)
                {
                        $day=$1;
                        $month = $months{lc $2};
                        $year=$3;
                        $hour=$4;
                        $min=$5;
                        $sec=$6;

                        # Horrible bug: The dates you're using use
                        #               two-digit years! I'll blindly
                        #               assume that all your dates
                        #               are in the 21st century or later.

                        $year += 100;
                }
                else
                {
                        die "$_: Does not conform to expected format\n";
                }

                # Convert the time into Unix's time_t value.
                push @times, mktime($sec, $min, $hour, $day, $month, $year);
        }

        # 21600 seconds in six hours.

        return (abs($times[0] - $times[1]) <= 21600);
}

 

10 More Discussions You Might Find Interesting

1. Programming

How to compare two dates

Hi I am writing a unix program. In that, i should compare two dates. I would like to know how to compare two dates in unix-whether they are same or not. pls help (5 Replies)
Discussion started by: bankpro
5 Replies

2. Programming

How to compare dates in C/C++

Hi, Is there any system defined function to compare two dates in C/C++? Thanks (1 Reply)
Discussion started by: naan
1 Replies

3. Shell Programming and Scripting

compare dates

Hi Gurus I am getting the timestamp of the last generated log file its like this "Oct 31 10:26" I want to compare this timestamp with the current date in shell script. I want to compare if the (timestamp-currentime) > 10 minutes how do i do this. Thanks Ragha (2 Replies)
Discussion started by: ragha81
2 Replies

4. Shell Programming and Scripting

compare dates...

hi all :) how can in compare yyyy/dd/mm with yyyy/dd/mm in perl i want the result like grater than or less than the given date... thanks in advance (3 Replies)
Discussion started by: i_priyank
3 Replies

5. Shell Programming and Scripting

How to compare the dates..

Hi all, I've written a script which gives the below information... End Date&Time: 2008-10-21 10.54.37 Now i want to calculate this time with the current time.. and if its more than 48 hours past with the current time it should echo "48 Hours back" Please help me.. thanks in... (4 Replies)
Discussion started by: suri.tyson
4 Replies

6. Shell Programming and Scripting

Compare dates

Need to find all records where date in one filed is greater than date in other. Input: ABC 2 Filed3 CDG * X 20080903 20081031 180.00 ABD 2 Filed3 CDG * X 20081101 20081031 190.00 ABE 2 Filed3 CDG * X 20090903 20081031 120.00 ABC 2 Filed3 CDG * X 20080903 20081015 130.00 Output: ... (2 Replies)
Discussion started by: necroman08
2 Replies

7. Shell Programming and Scripting

compare dates

I want to compare a list of dates in a file with today's date & list only dates that are less than only 60 days old . please help . the date in the file are in format 11-FEB-2009 02-FEB-2009 26-JAN-2009 24-JAN-2009 13-JAN-2009 16-DEC-2008 10-DEC-2008 01-DEC-2008 25-NOV-2008 19-NOV-2008... (3 Replies)
Discussion started by: skamal4u
3 Replies

8. Shell Programming and Scripting

The Best Way to Compare Dates

Hi to all. When you have to compare a lot of dates in a SH code, there is a way to directly compare? For example, how can I check if two dates differ in less than a week? Thank's for reading. (2 Replies)
Discussion started by: daniel.gbaena
2 Replies

9. HP-UX

Compare dates

Hi, I want to convert two datetime fields to find out if the difference is one hour, in linux I've done this by converting both the datetime values to unix epoch time and subtracting them to find out if the difference is more than 3600s, however this does not work in hp-ux. I've these... (3 Replies)
Discussion started by: Random_Net
3 Replies

10. Shell Programming and Scripting

Compare Dates.

Hi All, I am entering StartDate and EndDate as parameters to script. Want to have an check saying, "If StartDate is greater than EndDate then don't execute the script". Pseudo Code: if then Execute script else exit 0 fi Can you please help me on the same? Thanks and... (4 Replies)
Discussion started by: Nagaraja Akkiva
4 Replies
DateTime::Format::Natural::Lang::EN(3pm)		User Contributed Perl Documentation		  DateTime::Format::Natural::Lang::EN(3pm)

NAME
DateTime::Format::Natural::Lang::EN - English language metadata DESCRIPTION
"DateTime::Format::Natural::Lang::EN" provides the english specific grammar and variables. This class is loaded if the user either specifies the english language or implicitly. EXAMPLES
Below are some examples of human readable date/time input in english (be aware that the parser does not distinguish between lower/upper case; furthermore, many expressions allow for additional leading/trailing time and all times are also parsable with precision in seconds): Simple now yesterday today tomorrow morning afternoon evening noon midnight yesterday at noon yesterday at midnight today at noon today at midnight tomorrow at noon tomorrow at midnight this morning this afternoon this evening yesterday morning yesterday afternoon yesterday evening today morning today afternoon today evening tomorrow morning tomorrow afternoon tomorrow evening thursday morning thursday afternoon thursday evening 6:00 yesterday 6:00 today 6:00 tomorrow 5am yesterday 5am today 5am tomorrow 4pm yesterday 4pm today 4pm tomorrow last second this second next second last minute this minute next minute last hour this hour next hour last day this day next day last week this week next week last month this month next month last year this year next year last friday this friday next friday tuesday last week tuesday this week tuesday next week last week wednesday this week wednesday next week wednesday 10 seconds ago 10 minutes ago 10 hours ago 10 days ago 10 weeks ago 10 months ago 10 years ago in 5 seconds in 5 minutes in 5 hours in 5 days in 5 weeks in 5 months in 5 years saturday sunday 11:00 yesterday at 4:00 today at 4:00 tomorrow at 4:00 yesterday at 6:45am today at 6:45am tomorrow at 6:45am yesterday at 6:45pm today at 6:45pm tomorrow at 6:45pm yesterday at 2:32 AM today at 2:32 AM tomorrow at 2:32 AM yesterday at 2:32 PM today at 2:32 PM tomorrow at 2:32 PM yesterday 02:32 today 02:32 tomorrow 02:32 yesterday 2:32am today 2:32am tomorrow 2:32am yesterday 2:32pm today 2:32pm tomorrow 2:32pm wednesday at 14:30 wednesday at 02:30am wednesday at 02:30pm wednesday 14:30 wednesday 02:30am wednesday 02:30pm friday 03:00 am friday 03:00 pm sunday at 05:00 am sunday at 05:00 pm 2nd monday 100th day 4th february november 3rd last june next october 6 am 5am 5:30am 8 pm 4pm 4:20pm 06:56:06 am 06:56:06 pm mon 2:35 1:00 sun 1am sun 1pm sun 1:00 on sun 1am on sun 1pm on sun 12:14 PM 12:14 AM Complex yesterday 7 seconds ago yesterday 7 minutes ago yesterday 7 hours ago yesterday 7 days ago yesterday 7 weeks ago yesterday 7 months ago yesterday 7 years ago today 5 seconds ago today 5 minutes ago today 5 hours ago today 5 days ago today 5 weeks ago today 5 months ago today 5 years ago tomorrow 3 seconds ago tomorrow 3 minutes ago tomorrow 3 hours ago tomorrow 3 days ago tomorrow 3 weeks ago tomorrow 3 months ago tomorrow 3 years ago 2 seconds before now 2 minutes before now 2 hours before now 2 days before now 2 weeks before now 2 months before now 2 years before now 4 seconds from now 4 minutes from now 4 hours from now 4 days from now 4 weeks from now 4 months from now 4 years from now 6 in the morning 4 in the afternoon 9 in the evening monday 6 in the morning monday 4 in the afternoon monday 9 in the evening last sunday at 21:45 monday last week 6th day last week 6th day this week 6th day next week 12th day last month 12th day this month 12th day next month 1st day last year 1st day this year 1st day next year 1st tuesday last november 1st tuesday this november 1st tuesday next november 11 january next year 11 january this year 11 january last year 6 hours before yesterday 6 hours before tomorrow 3 hours after yesterday 3 hours after tomorrow 10 hours before noon 10 hours before midnight 5 hours after noon 5 hours after midnight noon last friday midnight last friday noon this friday midnight this friday noon next friday midnight next friday last friday at 20:00 this friday at 20:00 next friday at 20:00 1:00 last friday 1:00 this friday 1:00 next friday 1am last friday 1am this friday 1am next friday 1pm last friday 1pm this friday 1pm next friday 5 am last monday 5 am this monday 5 am next monday 5 pm last monday 5 pm this monday 5 pm next monday last wednesday 7am this wednesday 7am next wednesday 7am last wednesday 7pm this wednesday 7pm next wednesday 7pm last tuesday 11 am this tuesday 11 am next tuesday 11 am last tuesday 11 pm this tuesday 11 pm next tuesday 11 pm yesterday at 13:00 today at 13:00 tomorrow at 13 2nd friday in august 3rd wednesday in november tomorrow 1 year ago saturday 3 months ago at 17:00 saturday 3 months ago at 5:00am saturday 3 months ago at 5:00pm 11 january 2 years ago 4th day last week 8th month last year 8th month this year 8th month next year 6 mondays from now fri 3 months ago at 5am wednesday 1 month ago at 8pm final thursday in april last thursday in april Timespans monday to friday 1 April to 31 August 1999-12-31 to tomorrow now to 2010-01-01 2009-03-10 9:00 to 11:00 26 oct 10:00 am to 11:00 am jan 1 to 2 16:00 nov 6 to 17:00 may 2nd to 5th 100th day to 200th 6am dec 5 to 7am 1/3 to 2/3 2/3 to in 1 week 3/3 21:00 to in 5 days first day of 2009 to last day of 2009 first day of may to last day of may first to last day of 2008 first to last day of september for 4 seconds for 4 minutes for 4 hours for 4 days for 4 weeks for 4 months for 4 years Specific march january 11 11 january 18 oct 17:00 18 oct 5am 18 oct 5pm 18 oct 5 am 18 oct 5 pm dec 25 feb 28 3:00 feb 28 3am feb 28 3pm feb 28 3 am feb 28 3 pm 19:00 jul 1 7am jul 1 7pm jul 1 7 am jul 1 7 pm jul 1 jan 24, 2011 12:00 jan 24, 2011 12am jan 24, 2011 12pm may 27th 2005 march 1st 2009 October 2006 february 14, 2004 jan 3 2010 3 jan 2000 2010 october 28 2011-jan-04 27/5/1979 1/3 1/3 16:00 4:00 17:00 3:20:00 -5min +2d 20111018000000 Aliases 5 mins ago yesterday @ noon tues this week final thurs in sep tues thurs thur SEE ALSO
DateTime::Format::Natural AUTHOR
Steven Schubiger <schubiger@cpan.org> LICENSE
This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself. See <http://dev.perl.org/licenses/> perl v5.14.2 2012-05-31 DateTime::Format::Natural::Lang::EN(3pm)
All times are GMT -4. The time now is 11:56 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy