Calculate Elapsed Time


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Calculate Elapsed Time
# 1  
Old 06-15-2004
Calculate Elapsed Time

I'm looking for the cleanest way to calculate the time elapsed between two times in KSH. In minutes or in hours and minutes if it has been longer than 59 minutes.

Here are some random examples:

Example result: 25 Minutes
or
Example result: 1 Hour and 25 Minutes

Example time format:
"23:45:33 EDT 2004" and "00:25:06 EDT 2004"

If anyone has a solution or idea, I would be very grateful. These types of problems just seem to throw the brakes on my brain right from the start. Thanks for any help Smilie

-Sys
# 2  
Old 06-15-2004
Code:
shell% man time

# 3  
Old 06-15-2004
Here is a tip:

Convert your times to seconds and do your calculations in seconds. If you want to display, convert back from seconds.

Enjoy!
# 4  
Old 06-15-2004
Convert times to minutes; subtract start time from end time; if negative then started before mignight; print result....
Code:
#!usr/bin/ksh

start="23:45:33 EDT 2004"
end="00:25:06 EDT 2004"

((start_mins = $(expr substr "$start" 1 2)*60 + $(expr substr "$start" 4 2)))
((end_mins = $(expr substr "$end" 1 2)*60 + $(expr substr "$end" 4 2)))
((elapsed_mins = end_mins - start_mins))

if [[ "$elapsed_mins" -lt 0 ]]
then
   ((elapsed_mins += 1440))
fi

if [[ "$elapsed_mins" -gt 59 ]]
then
   print $((elapsed_mins / 60)) hours and $((elapsed_mins % 60)) minutes
else
   print $elapsed_mins minutes
fi

# 5  
Old 06-15-2004
ksh has a built-in SECONDS variable. Just do:
orig=$SECONDS
some_command
((elasped=SECONDS-orig))
echo $elasped
# 6  
Old 06-17-2004
Thank you Ygor, that does exactly what I was looking for. Some day I too will be able to make these insane things up on my own with a little help from examples like yours. Smilie

-Sys

Quote:
Originally posted by Ygor
Convert times to minutes; subtract start time from end time; if negative then started before mignight; print result....
Code:
#!usr/bin/ksh

start="23:45:33 EDT 2004"
end="00:25:06 EDT 2004"

((start_mins = $(expr substr "$start" 1 2)*60 + $(expr substr "$start" 4 2)))
((end_mins = $(expr substr "$end" 1 2)*60 + $(expr substr "$end" 4 2)))
((elapsed_mins = end_mins - start_mins))

if [[ "$elapsed_mins" -lt 0 ]]
then
   ((elapsed_mins += 1440))
fi

if [[ "$elapsed_mins" -gt 59 ]]
then
   print $((elapsed_mins / 60)) hours and $((elapsed_mins % 60)) minutes
else
   print $elapsed_mins minutes
fi

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Help in : sorting process by their elapsed time: HP-UX

What is the equivalent command of the below linux command would be in hp-ux UNIX95=1 ps -eo pid,start,stime,command Thanks a lot, (1 Reply)
Discussion started by: rveri
1 Replies

2. Shell Programming and Scripting

Compare two timestamps and print elapsed time

Hi, I am unable to Difference between two time stamps in Linux and display the total elapsed time . Source date: Aug 15, 2012 02:00:03 Target date: Aug 14, 2012 18:00:03 # based on the forums I am using the below function. Converted dates into this format Src_dt=20120814180003... (7 Replies)
Discussion started by: onesuri
7 Replies

3. Shell Programming and Scripting

Help needed with elapsed time from text values

I'm extracting two time & date values from a log file, and I need a way to calculate the elapsed time between the two. The values are in this format: Feb 12 10:53:15 Feb 12 10:59:57 The difference is 6 minutes and 42 seconds Does anyone know if there is a way to do this? I've seen lots of... (4 Replies)
Discussion started by: peterv6
4 Replies

4. Shell Programming and Scripting

Time elapsed since script started

Hi I want to know if there is anyway I can find out how long it has been since I started my script or total time it has been since my script is executing. Idea here is I want to check if my script is taking more than 30minutes to execute I want to kill that process. Thanks in advance. (1 Reply)
Discussion started by: dashing201
1 Replies

5. Shell Programming and Scripting

elapsed time

Display the elapsed time $ export data_ini = `date +'%s'`; echo $data_ini 1292417961 $ export data_final = `date +'%s'`; echo $data_final 1292418079 $ ((temps = data_final - data_ini)); echo $temps 118 $ echo $((data_final - data_ini)) #total seconds 118 $ echo $(((data_final... (1 Reply)
Discussion started by: aika
1 Replies

6. Shell Programming and Scripting

Elapsed time in seconds in awk

I am trying to get the ellapsed time in seconds in the body of the awk script. I use unix date to get the time. It works in BEGIN {} but not in the body {} of awk. Any ideas? $ cat a BEGIN { "date +%s" | getline x print x } { "date +%s" | getline y print y } $ echo "one line" |... (3 Replies)
Discussion started by: arturas123
3 Replies

7. Shell Programming and Scripting

Help on Time elapsed?

Hi All, I have 2 variables like SDATE and EDATE. Now for example i ll give you values for the above 2 variables. SDATE=11/08/09 11:22 EDATE=11/09/09 22:33 the values of the above variables are represented like this>>>>>> mm/dd/yy hh:mm Now I want to evaluate total time elapsed... (3 Replies)
Discussion started by: smarty86
3 Replies

8. Shell Programming and Scripting

Need to calculate elapsed time

Hi there, How to calculate the elapsed time in minutes for a particular job run under unix. I tried the following $ ps -efo user,pid,etime,comm,args | grep myscript | grep -v grep | awk -F" " '{print $3}' OUTPUT: 01:02:49 I need to get this output in minutes. Can someone help me... (1 Reply)
Discussion started by: karthickrn
1 Replies

9. Shell Programming and Scripting

Adding Elapsed time

I'm using the Bourne shell and trying to write a script that will add all the time that any particular user has been on the network for. I've used last-h | grep "username" | cut -c 58-62 to get the times. Then I wrote a script that takes the time and converts it into just minutes. Now I... (1 Reply)
Discussion started by: jrdnoland1
1 Replies

10. Programming

Displaying elapsed time...

I am trying to display the amount of time that it took for a command to run. I'm assuming that i have the correct code: ... else { printf("I am a child process and my pid is %d\n", getpid()); cout<<"Parameters are: "<<endl; for... (5 Replies)
Discussion started by: jj1814
5 Replies
Login or Register to Ask a Question