Perl - turning seconds into days, hours, minutes and seconds
Archive - Originally posted on "The Horse's Mouth" - 2006-06-17 05:56:56 - Graham EllisSo 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.