Sponsored Content
Top Forums Shell Programming and Scripting Problem with Date Comparision Post 302338405 by durden_tyler on Monday 27th of July 2009 10:58:12 PM
Old 07-27-2009
Quote:
Originally Posted by Raji_gadam
...
-- I want to compare the date in the last line of the file mentioned in the example below with the system date from Monday to Friday.
-- If system date is equal to the date in the Last line then ignore else send a mail notification
--For Saturday it should compare the sysdate-1 with the date in the last line from the file
--For Sunday it should compare the sysdate-2 with the date in the last line from the file.
...
Here's one way to do it in Perl:

Code:
$ 
$ cat data.txt
AUSTRALIA|AUD|27.4397|27.5252|28.0534
NEW ZEALAND|NZD|22.1046|22.1768|22.6529
PAKISTAN *|PKR|0.4014|0.4032|0.4279
CANADA|CAD|30.5810|30.6682|31.1338
SWEDEN|SEK|4.4355|4.4524|4.5209
DENMARK|DKK|6.4231|6.4423|6.5412
NORWAY|NOK|5.3448|5.3617|5.4429
CHINA|CNY|4.9459|4.9570|5.0135
* Averaged from few commercial banks
Released on 24 July 2009
$ 
$ cat cmp_date.pl
#!/usr/bin/perl -w
use Date::Calc qw(:all);
%mth = qw(1 Jan 2 Feb 3 Mar 4 Apr 5 May 6 Jun
          7 Jul 8 Aug 9 Sep 10 Oct 11 Nov 12 Dec);

# get date from file
open( F1, "data.txt" ) or die "Can't open data.txt: $!";
while (<F1>) { chomp( $line = $_ ); }
close(F1) or die "Can't close data.txt: $!";
$line =~ s/Released on //;
@fd = Decode_Date_EU($line);  # decode file date and assign to array fd
##
print "Today is:  ", Date_to_Text( Today() ), "\n";

# if day of week > 5 (sat and sun) then change ref date
if ( Day_of_Week( Today() ) > 5 ) {
    @rd = Add_Delta_Days( Today(), 5 - Day_of_Week( Today() ) );
                         # today-1 if sat; today-2 if sun
} else {
    @rd = Today();       # today if mon-fri
}
print "File date: $fd[2]-$fd[1]-$fd[0]\n";
print "Ref  date: $rd[2]-$rd[1]-$rd[0]\n";
cmp_and_print( @fd, @rd );

# function to compare and print
sub cmp_and_print {
    ( $y1, $m1, $d1, $y2, $m2, $d2 ) = @_;
    $cmp = ( Date_to_Days( $y1, $m1, $d1 ) <=> Date_to_Days( $y2, $m2, $d2 ) );
    print "$d1-$mth{$m1}-$y1 is ",
          $cmp == 1 ? "greater than" : $cmp == 0 ? "equal to" : "less than",
          " $d2-$mth{$m2}-$y2\n";
}

$ 
$ perl cmp_date.pl
Today is:  Mon 27-Jul-2009
File date: 24-7-2009
Ref  date: 27-7-2009
24-Jul-2009 is less than 27-Jul-2009
$ 
$

tyler_durden
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

date comparision

Hello, I am trying to compare two dates which are in variables and i am not getting the correct result as expected. $first_date = '07/19/2007' $second_date='07/20/2007' Can you please suggest how to i check whether they are equal or not. if ($first_date -eq $second_date) condition is not... (3 Replies)
Discussion started by: kotasateesh
3 Replies

2. Solaris

date comparision

I am wriitng a shell script to compare a date in `date +%Y%m%d%H%M` to the output of `cat /var/adm/messages.0 | grep Temp |grep "CPU Fans" | cut -f1-4,19 -d' '` which looks like Dec 2 11:30:57 79 Dec 2 11:37:58 79 Dec 2 11:44:58 79 Dec 2 11:50:59 79 Dec 2 11:58:00 79 Dec 2... (1 Reply)
Discussion started by: Hitesh Shah
1 Replies

3. Shell Programming and Scripting

Date Comparision in the File

Hi All, I have thefollowing files in the directory inbox/sat ras.sat.trn.20090103.001902.00004358 ras.sat.trn.20090612.001903.00005339 ras.sat.trn.20090723.001902.00004358 The above file contains the date of the file creation. We just need to write a ksh shell script to check the... (5 Replies)
Discussion started by: satheesh_color
5 Replies

4. Shell Programming and Scripting

problem in date comparision

#!/bin/ksh var="2009-08-31 12:39:05 UTC" ddate=`echo $var|cut -d' ' -f1` y1=`echo $ddate|cut -d'-' -f1` m1=`echo $ddate|cut -d'-' -f2` d1=`echo $ddate|cut -d'-' -f3` filedate=$y1$m1$d1 currdate="20070814" if ]; then echo "$LINE -> $filedate LOWER THAN $currdate" ... (0 Replies)
Discussion started by: HemaV
0 Replies

5. Programming

Problem with date comparision in Pro*C

Hi, I have written the following Pro*C program to get the difference between 2 dates.But when I am printing the value of the date difference,it is always showing 0. #include<stdio.h> #include<sqlca.h> #include<oraca.h> void main() { EXEC SQL BEGIN DECLARE SECTION; int diff; ... (4 Replies)
Discussion started by: sureshbabuc
4 Replies

6. Shell Programming and Scripting

Date - String comparision

Hi, I am having difficulty to compare a string in a file against a date from a a table and print the latest date. Below are the values. String in File : 2009-12-02 00:37:51 Value Table : 2010-01-10-02.00.49.294758 I have to compare both the values ( Ignore the Microsecond in the table... (5 Replies)
Discussion started by: sam_78_nyc
5 Replies

7. Shell Programming and Scripting

Date Manipulation and Comparision

Hi All, I want to generate quarter dates using awk or anything, by giving a dates as input for example : start_date=2010-01-01 end_date=2010-05-31 output should be: start_date end_date qtr 2010-01-01 2010-03-31 1 2010-04-01 2010-05-31 2 Example 2:... (1 Reply)
Discussion started by: sol_nov
1 Replies

8. Shell Programming and Scripting

problem in variable comparision

Hi All, I need to compare the string variable with input value which have more than one word which also should be case insensitive. #!/bin/sh echo "please choose your choice: " read choice if ` ] then echo "correct" else echo "wrong" fi but i am getting the output for first word... (3 Replies)
Discussion started by: kalai
3 Replies

9. Shell Programming and Scripting

Date comparision in Unix

Hi All, I would need your help to compare dates in my script. Say if I have the dates in a file I need to comapre these dates with yesterday's date and the dates which are older than yesterday needs to be displayed. Example: 03/22/2012 03/24/2012 03/20/2012 03/21/2012 03/12/2012... (1 Reply)
Discussion started by: pdreddy34
1 Replies

10. Shell Programming and Scripting

Date command comparision with a different format

I have a script called " passwd_status " which gives the passwd-s status of my servers. the script output is like below password status for A: abc ks 10/05/115 1 30 ps password status for B: abc ks 09/25/115 1 30 ps password status for C: abc ks 10/10/115 1 30 ps Now , i want to... (1 Reply)
Discussion started by: charanarjun
1 Replies
Email::Date(3pm)					User Contributed Perl Documentation					  Email::Date(3pm)

NAME
Email::Date - Find and Format Date Headers SYNOPSIS
use Email::Date; my $email = join '', <>; my $date = find_date($email); print $date->ymd; my $header = format_date($date->epoch); Email::Simple->create( header => [ Date => $header, ], body => '...', ); DESCRIPTION
RFC 2822 defines the "Date:" header. It declares the header a required part of an email message. The syntax for date headers is clearly laid out. Stil, even a perfectly planned world has storms. The truth is, many programs get it wrong. Very wrong. Or, they don't include a "Date:" header at all. This often forces you to look elsewhere for the date, and hoping to find something. For this reason, the tedious process of looking for a valid date has been encapsulated in this software. Further, the process of creating RFC compliant date strings is also found in this software. FUNCTIONS find_date my $time_piece = find_date $email; "find_date" accepts an email message in any format Email::Abstract can understand. It looks through the email message and finds a date, converting it to a Time::Piece object. If it can't find a date, it returns false. "find_date" is exported by default. format_date my $date = format_date; # now my $date = format_date( time - 60*60 ); # one hour ago "format_date" accepts an epoch value, such as the one returned by "time". It returns a string representing the date and time of the input, as specified in RFC 2822. If no input value is provided, the current value of "time" is used. "format_date" is exported by default. format_gmdate my $date = format_gmdate; "format_gmdate" is identical to "format_date", but it will return a string indicating the time in Greenwich Mean Time, rather than local time. "format_gmdate" is exported on demand, but not by default. PERL EMAIL PROJECT
This module is maintained by the Perl Email Project <http://emailproject.perl.org/wiki/Email::Date> SEE ALSO
Email::Abstract, Time::Piece, Date::Parse, perl. AUTHOR
Casey West, <casey@geeknest.com>. Ricardo SIGNES, <rjbs@cpan.org>. COPYRIGHT
Copyright (c) 2004 Casey West. All rights reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.10.1 2007-12-01 Email::Date(3pm)
All times are GMT -4. The time now is 05:48 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy