Skip to content

Instantly share code, notes, and snippets.

@jtarleton
Created January 2, 2013 16:34
Show Gist options
  • Save jtarleton/4435891 to your computer and use it in GitHub Desktop.
Save jtarleton/4435891 to your computer and use it in GitHub Desktop.
Helper to convert seconds to hours, minutes, and seconds
<?php
//credit: Jon Haworth at laughing-buddha.net (I added the $asArray param)
function sec2hms ($sec, $padHours = false, $asArray = false)
{
// start with a blank string
$hms = "";
// do the hours first: there are 3600 seconds in an hour, so if we divide
// the total number of seconds by 3600 and throw away the remainder, we're
// left with the number of hours in those seconds
$hours = intval(intval($sec) / 3600);
// add hours to $hms (with a leading 0 if asked for)
$hms .= ($padHours)
? str_pad($hours, 2, "0", STR_PAD_LEFT). ":"
: $hours. ":";
// dividing the total seconds by 60 will give us the number of minutes
// in total, but we're interested in *minutes past the hour* and to get
// this, we have to divide by 60 again and then use the remainder
$minutes = intval(($sec / 60) % 60);
// add minutes to $hms (with a leading 0 if needed)
$hms .= str_pad($minutes, 2, "0", STR_PAD_LEFT). ":";
// seconds past the minute are found by dividing the total number of seconds
// by 60 and using the remainder
$seconds = intval($sec % 60);
// add seconds to $hms (with a leading 0 if needed)
$hms .= str_pad($seconds, 2, "0", STR_PAD_LEFT);
// done!
return ($asArray) ? explode(':', $hms) : $hms;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment