The following code can be used to convert some time in seconds to minutes, hours and days in bash
.
It will print on screen the converted values only if they are not 0. i.e If the resulting days is 0, it will not print the text for days at all.
You can use it in any script without copy pasting everything in it by executing the following command source ./convertAndPrintSeconds.sh
.
Doing so, it will load to your script the function that is defined in convertAndPrintSeconds.sh
, making it available for you to use (something like including code in C, with some caveats).
[download id=”2118″]
#!/bin/bash convertAndPrintSeconds() { local totalSeconds=$1; local seconds=$((totalSeconds%60)); local minutes=$((totalSeconds/60%60)); local hours=$((totalSeconds/60/60%24)); local days=$((totalSeconds/60/60/24)); (( $days > 0 )) && printf '%d days ' $days; (( $hours > 0 )) && printf '%d hours ' $hours; (( $minutes > 0 )) && printf '%d minutes ' $minutes; (( $days > 0 || $hours > 0 || $minutes > 0 )) && printf 'and '; printf '%d seconds\n' $seconds; }
Usage
Function convertAndPrintSeconds
accepts one parameter, the positive integer number that represents the seconds count we want to convert.
Example
$ source ./time.sh $ convertAndPrintSeconds 10 10 seconds $ convertAndPrintSeconds 100 1 minutes and 40 seconds $ convertAndPrintSeconds 1000 16 minutes and 40 seconds $ convertAndPrintSeconds 10000 2 hours 46 minutes and 40 seconds $ convertAndPrintSeconds 100000 1 days 3 hours 46 minutes and 40 seconds $ convertAndPrintSeconds 1000000 11 days 13 hours 46 minutes and 40 seconds