Difference between 2 dates


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Difference between 2 dates
# 1  
Old 07-15-2013
Error Difference between 2 dates

Hi Friends,

I have a file that has the contents like below:
file1.txt
Code:
5,13/07/2013 23:25:25,14/07/2013 19:40:21
5,13/07/2013 23:25:25,14/07/2013 19:40:43
5,12/07/2013 23:50:50,13/07/2013 20:30:26
5,12/07/2013 23:20:24,13/07/2013 19:40:53
60,14/07/2013 00:00:00,14/07/2013 23:00:39
60,14/07/2013 00:00:00,14/07/2013 23:00:36
60,14/07/2013 00:00:00,14/07/2013 23:00:47
t60,14/07/2013 01:00:00,15/07/2013 00:00:29
60,14/07/2013 00:00:04,14/07/2013 23:00:13
60,14/07/2013 00:00:34,14/07/2013 23:00:19

Now I need to find the difference between these 2 dates...for eg if I subtract date1=13/07/2013 23:55:55 and date2=14/07/2013 23:55:55..then the difference in minutes between these two dates is 1440..now I need to divide this number with the first field of the file.So the difference=date2-date1/60
I need to perform this operation for too many files.but the calculation is taking too much time.I am working on AIX. there is no mktime function available.How to optimize it.....

Last edited by Scott; 07-15-2013 at 04:25 PM.. Reason: Code tags
# 2  
Old 07-15-2013
Have you searched this forum?

There are several questions like this.
https://www.unix.com/shell-programmin...two-dates.html

https://www.unix.com/answers-frequent...rithmetic.html
# 3  
Old 07-15-2013
Thanks Joyeg...I had the script to calculate the difference but it is taking too much time..Let me explain you the logic that is being used by me:
Code:
for i in `cat calc_file_list.txt`
do
  echo "$i" >> newfile.txt
  while read line
  do
    sh timediffcalc.sh $line
  done<"$i"
done

where timediffcalc.sh is:
Code:
x="$2 $3"
y="$4 $5"
z="$1"
year1=`echo $x|cut -d- -f1`
month1=`echo $x|cut -d- -f2`
day1=`echo $x|cut -d- -f3|cut -d" " -f1`
lhr1=`echo $x|cut -d: -f1|cut -d" " -f2`
lmin1=`echo $x|cut -d: -f2`
lsec1=`echo $x|cut -d: -f3`
year2=`echo $y|cut -d- -f1`
month2=`echo $y|cut -d- -f2`
day2=`echo $y|cut -d- -f3|cut -d" " -f1`
lhr2=`echo $y|cut -d: -f1|cut -d" " -f2`
lmin2=`echo $y|cut -d: -f2`
lsec2=`echo $y|cut -d: -f3`

yr1=$(((year1 - 1970)*365.25*24*60*60))
mn1=$(((month1*30.5)*86400))
dy1=$(((day1-1)*86400))
hr1=$(((lhr1)*3600))
min1=$(((lmin1)*60))
secs1=$((yr1+mn1+dy1+hr1+min1+lsec1))
yr2=$(((year2 - 1970)*365.25*24*60*60))
mn2=$(((month2*30.5)*86400))
dy2=$(((day2-1)*86400))
hr2=$(((lhr2)*3600))
min2=$(((lmin2)*60))
secs2=$((yr2+mn2+dy2+hr2+min2+lsec2))

diffval=$((secs2-secs1))
difmin=$((diffval/60))
intervalobt=$((difmin/$z))

if [ "$intervalobt" -ge 700 ]; then
  echo $x,$y,$z,$intervalobt >> newfile.txt
fi

The file calc_file_list.txt is a list of files:
Code:
condition_1
condition_2
condition_3
condition_4

sample data for condition_1
Code:
5 2013-07-13 23:25:00 2013-07-14 19:40:00
5 2013-07-13 23:25:00 2013-07-14 19:40:00
5 2013-07-12 23:50:00 2013-07-13 20:30:00

But this logic is taking too much time and that is not desired...is there any way we can optimize it....

Last edited by Scott; 07-15-2013 at 04:27 PM.. Reason: Code tags
# 4  
Old 07-15-2013
You may not have much option but a pure-Perl script.
# 5  
Old 07-15-2013
In message #1 in this thread, you show a comma separated file with dates in day/month/year format. (And you have "t60" as a sample dividend.)

In message #3 in this thread, you show a space separated file with dates in year-month-day format.

Are these two different problems mixed into one thread? Is the program you want created for you supposed to handle both input formats? Are there other input formats?

Your use of 365.25 and 30.5 inside $((...)) imply that sh on your system is a 1993 or later version of the Korn shell. Assuming that is correct and that the calculations in the script you showed in message #3 are accurate enough for what you're trying to do, that script can be made MUCH faster by letting the shell perform the field splitting instead of using so many invocations of cut. Try replacing:
Code:
year1=`echo $x|cut -d- -f1`
month1=`echo $x|cut -d- -f2`
day1=`echo $x|cut -d- -f3|cut -d" " -f1`
lhr1=`echo $x|cut -d: -f1|cut -d" " -f2`
lmin1=`echo $x|cut -d: -f2`
lsec1=`echo $x|cut -d: -f3`
year2=`echo $y|cut -d- -f1`
month2=`echo $y|cut -d- -f2`
day2=`echo $y|cut -d- -f3|cut -d" " -f1`
lhr2=`echo $y|cut -d: -f1|cut -d" " -f2`
lmin2=`echo $y|cut -d: -f2`
lsec2=`echo $y|cut -d: -f3`

in timediffcalc.sh with:
Code:
OIFS="$IFS"
IFS=" -:"
set -- $2 $3 $4 $5
IFS="$OIFS"
year1=$1
month1=$2
day1=$3
lhr1=$4
lmin1=$5
lsec1=$6
year2=$7
month2=$8
day2=$9
lhr2=${10}
lmin2=${11}
lsec2=${12}

This User Gave Thanks to Don Cragun For This Post:
# 6  
Old 07-17-2013
Thanks Don Cragun..yes now the code is working fine with large data.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Difference between two dates

Hi There I am trying to find the difference between two dates in seconds, by taking the first 10 digits of the file name itself, which I have done as shown below: current_time=`date +%s` last_login_of_tim=`date -d @1489662376 +%s` diff_sec=$(($current_time-$last_login_of_tim)) ... (5 Replies)
Discussion started by: simpsa27
5 Replies

2. Fedora

Difference of dates

I have a script which is printing date in below format while writing the logs. theDate=`date +"%m%d%Y"` theTime=`date +"%H%M%S"` echo $theDate $theTime How can i find out difference current time and above format. Appreciate your help. (6 Replies)
Discussion started by: srikanth38
6 Replies

3. Shell Programming and Scripting

Difference between two dates

hi all, I need a help for below requirement. Difference between two dates"12-11-2009" and "03-25-2012" (mm-dd-yy format") in weeks and days and hours Please help me for this. Thanks in adv.... I am working in AIX, so dont have below command:- date --version (2 Replies)
Discussion started by: gani_85
2 Replies

4. Shell Programming and Scripting

Difference between two dates

Hi! I have two parameters like this: YYYY-MM-DD YYYY-MM-DD My question is, there is a direct command for get the elapsed time between the 2 dates, or I have to find another way? Thx! (1 Reply)
Discussion started by: MalaTomi
1 Replies

5. Shell Programming and Scripting

Calculating the difference between dates

Hello! i need to find files lower and bigger that one date i pass, i search in the man find, but i didn't find anything, the only that i find is the parameter -mtime, in this parameter i can pass a number of days, but i need to know the difference between dates, any built-in function for do... (15 Replies)
Discussion started by: claw82
15 Replies

6. Shell Programming and Scripting

Perl difference between dates

Hi, Is there any way I can get the difference between two dates in terms of days? I have used this method so far, but I cant format it in terms of days. @a=&DateCalc($date1,$date2,0); The o/p that I am getting is sort of like this: +0:0:0:4:0:0:0 I just want to get 4 days as an o/p.... (1 Reply)
Discussion started by: King Nothing
1 Replies

7. Shell Programming and Scripting

Difference between two dates.

Hi all. My question may seems to be similar to one that already been here. But i need a little other solution. I have two dates in format dd/mm/yyyy. I need to find number of days between them. I need to do it in bash script. I am running on Solaris machine and have cutted 'date' command version... (1 Reply)
Discussion started by: kukuruku
1 Replies

8. Shell Programming and Scripting

Days difference between two dates

Hello, I would like to find out the number of days between two dates of the format yyyy-mm-dd. Any help on this is highly appreciated. Thanks. (6 Replies)
Discussion started by: Data469
6 Replies

9. Shell Programming and Scripting

Difference between two dates in no of days ???

Hi All How to get the difference between two dates in no of days ??? My date format is like this YYYY/MM/DD. I have to get the no of days between two dates in the given format. I tried to search the forum but nothing came up similar to my requitement. Your help will be appreciated. ... (1 Reply)
Discussion started by: csaha
1 Replies

10. Shell Programming and Scripting

Difference between two dates...

Hi All, Wish you a Happy New year... I have to find the difference between two dates, the result should be the number of days. I have seen the "datecalc" function. Its good, can I have any other alternative. Thanks in Advance Raju (4 Replies)
Discussion started by: rajus19
4 Replies
Login or Register to Ask a Question