« Journey planning - Xephos v Transport Direct | Main | Discounts and approved supplier lists »

June 17, 2006

Perl - turning seconds into days, hours, minutes and seconds

So often you'll be working within a program in seconds - elapsed times, delays, that sort of thing - but want to report times back to the user in terms of hours, minutes and seconds. The conventional programming way to do this is to do a series of divisions and grab the remainder, but in Perl you can use the gmtime function which converts a number of seconds from 1st January 1970 into a list of 9 elements of a date. Up to 365 days, you can simply take the days-into-year and hours, minutes and seconds value returned by gmtime.

# Convert seconds to days, hours, minutes, seconds
$seconds = 94054;
@parts = gmtime($seconds);
printf ("%4d %4d %4d %4d\n",@parts[7,2,1,0]);

When I run that:

earth-wind-and-fire:~/jun06 grahamellis$ perl ts
   1   2   7  34
earth-wind-and-fire:~/jun06 grahamellis$

A conversion of 94.054 seconds into 1 day, 2 hours, 7 minutes and 34 seconds.

Posted by gje at June 17, 2006 05:56 AM

Comments

Well House Consultants Ltd. Copyright 2010