#!/bin/ksh # # seconds2text # Korn shell function # Convert Seconds to a String like "1 day, 17 hours, 12 minutes, 11 seconds" # # Examples: # * seconds2text 1 returns "1 second" # * seconds2text 2 returns "2 seconds" (automatically sets plural) # * seconds2text 3925 returns "1 hour, 5 minutes, 25 seconds" # * seconds2text 390370 returns "4 days, 12 hours, 26 minutes, 10 seconds" # AUTHOR="Mike Arnold " VERSION="200407050337" # # Format the time unit (sets plurality) # expects: TIME_VALUE UNIT (ie "6" "day") # returns: formatted OUT mkstring () { TIME_VALUE=$1 UNIT=$2 if [[ $TIME_VALUE -eq 0 ]]; then OUT="" elif [[ $TIME_VALUE -eq 1 ]]; then OUT="1 $UNIT, " else OUT="$TIME_VALUE ${UNIT}s, " fi echo "$OUT" } seconds2text () { # Convert seconds to week/day/hour/minute let TEMP0=$1/60 let SECOND=$1-$TEMP0*60 let TEMP1=$TEMP0/60 let MINUTE=$TEMP0-$TEMP1*60 let TEMP2=$TEMP1/24 let HOUR=$TEMP1-$TEMP2*24 let TEMP3=$TEMP2/7 let DAY=$TEMP2-$TEMP3*7 WEEK=$TEMP3 # Build the output string STRING="`mkstring $WEEK week`" STRING="$STRING`mkstring $DAY day`" STRING="$STRING`mkstring $HOUR hour`" STRING="$STRING`mkstring $MINUTE minute`" STRING="$STRING`mkstring $SECOND second`" # Remove the trailing comma STRING=`echo $STRING | sed 's/,$//'` # Print it out echo "$STRING" } seconds2text $1