PX : code

Convert Seconds to Pretty, Human-Friendly String by John Asante Ntow
Rating: 5.00
Download this code


<?php
/***********************************************
* FUNCTIONS
************************************************/
function secs_to_string ($secs$long=false)
{
  
// reset hours, mins, and secs we'll be using
  
$hours 0;
  
$mins 0;
  
$secs intval ($secs);
  
$t = array(); // hold all 3 time periods to return as string
  
  // take care of mins and left-over secs
  
if ($secs >= 60) {
    
$mins += (int) floor ($secs 60);
    
$secs = (int) $secs 60;
        
    
// now handle hours and left-over mins    
    
if ($mins >= 60) {
      
$hours += (int) floor ($mins 60);
      
$mins $mins 60;
    }
    
// we're done! now save time periods into our array
    
$t['hours'] = (intval($hours) < 10) ? "0" $hours $hours;
    
$t['mins'] = (intval($mins) < 10) ? "0" $mins $mins;
  }

  
// what's the final amount of secs?
  
$t['secs'] = (intval ($secs) < 10) ? "0" $secs $secs;
  
  
// decide how we should name hours, mins, sec
  
$str_hours = ($long) ? "hour" "hour";

  
$str_mins = ($long) ? "minute" "min";
  
$str_secs = ($long) ? "second" "sec";

  
// build the pretty time string in an ugly way
  
$time_string "";
  
$time_string .= ($t['hours']) ? $t['hours'] . " $str_hours" . ((intval($t['hours']) == 1) ? "" "s") : "";
  
$time_string .= ($t['mins']) ? (($t['hours']) ? ", " "") : "";
  
$time_string .= ($t['mins']) ? $t['mins'] . " $str_mins" . ((intval($t['mins']) == 1) ? "" "s") : "";
  
$time_string .= ($t['hours'] || $t['mins']) ? (($t['secs'] >= 0) ? ", " "") : "";
  
$time_string .= ($t['secs']) ? $t['secs'] . " $str_secs" . ((intval($t['secs']) == 1) ? "" "s") : "";

  return empty(
$time_string) ? $time_string;
}

// do the same as above in "hh:mm:ss" format
function secs_to_string_compact ($secs)
{
  
// grab the string return by the above function
  // and format begin formatting it
  
$str secs_to_string ($secs);
  

  if (!
$str) return 0;
    
    
$hour_pos strpos ($str"hour");
    
$min_pos strpos ($str"min");
    
$sec_pos strpos ($str"sec");
    
    
$h = ($hour_pos) ? intval (substr ($str0$hour_pos)) : 0;
    
$m = ($min_pos) ? intval (substr ($str$min_pos 3$min_pos)) : 0;
    
$s = ($sec_pos) ? intval (substr ($str$sec_pos 3$sec_pos)) : 0;
    
    
$h = ($h 10) ? "0" $h $h;
    
$m = ($m 10) ? "0" $m $m;
    
$s = ($s 10) ? "0" $s $s;
    
    return (
"$h:$m:$s");
}

/***********************************************
* EXAMPLE
************************************************/
$secs 43843;

$pretty_string_long secs_to_string ($secs); // 12 hours, 10 mins, 43 secs
$pretty_string_short secs_to_string_compact ($secs); // 12:10:43

?>

Comments or questions?
PX is running PHP 5.2.17
Thanks to Miranda Productions for hosting and bandwidth.
Use of any code from PX is at your own risk.