Say you’re running a process that runs in the background. It’s better to not let the user lose their patience and tell them when it will finish. But, you have the time remaining in seconds. If we show the user :
567 seconds to complete
He/she (user) would have to take a calculator and convert it into minutes or hours. Or if the guy/gal is not a math genius, he would close the UI and say “What the Hell ?”
The primary point in UI is that
Don't irritate the user
Mark my words : “You shouldn’t make the user angry”.
Here is a simple function to convert seconds to hours, minutes and seconds separately or mixed together :
function secToHR($seconds) {
$hours = floor($seconds / 3600);
$minutes = floor(($seconds / 60) % 60);
$seconds = $seconds % 60;
return "$hours:$minutes:$seconds";
}
If you’re wondering why I chose secToHR as the function name, it’s the abbreviation of Seconds to Human Readable.
Or if you wanna display like this :
1 hour, 20 minutes remaining
10 minutes, 20 seconds remaining
15 seconds remaining
then, replace the return function with this :
return $hours > 0 ? "$hours hours, $minutes minutes remaining" : ($minutes > 0 ? "$minutes minutes, $seconds seconds remaining" : "$seconds seconds remaining");
BTW, I would suggest you do it like above ^, because it’s more user friendly.
Usage
Simple as it is :
/**
* Function with 'h:m:s' form as return value
*/
echo secToHR(560);
echo secToHR(10950);
/**
* Function with 'remaining' in return value
*/
echo secToHR();
And the corresponding outputs :
0:9:20
3:2:30
9 minutes, 20 seconds remaining
3 hours, 2 minutes remaining
I have used this in the Downloader App as I mentioned in the previous post.