55 lines
1.1 KiB
Bash
Executable file
55 lines
1.1 KiB
Bash
Executable file
#!/usr/bin/bash
|
|
|
|
hours=("zero" "one" "two" "three" "four" "five" "six" "seven" "eight" "nine" "ten" "eleven" "twelve")
|
|
|
|
hour=$(date +'%I')
|
|
minute=$(date +'%M')
|
|
|
|
# strips leading zero to prevent octal number assumption
|
|
hour=$(( "10#$hour" ))
|
|
minute=$(( "10#$minute" ))
|
|
|
|
# if the hour is more than half done, we make reference to the next hour, set adverb to "to" and subract 30 from minutes
|
|
if (( minute >= 33 ))
|
|
then
|
|
if (( hour == 12 ))
|
|
then
|
|
hour=1
|
|
else
|
|
hour=$(( hour + 1 ))
|
|
fi
|
|
minute=$(( 60 - minute ))
|
|
adverb="to"
|
|
else
|
|
adverb="past"
|
|
fi
|
|
|
|
hour_as_text=${hours[$hour]}
|
|
|
|
if (( minute < 3 ))
|
|
then
|
|
time_as_text="$hour_as_text o'clock"
|
|
elif (( minute < 8 ))
|
|
then
|
|
time_as_text="five $adverb $hour_as_text"
|
|
elif (( minute < 13 ))
|
|
then
|
|
time_as_text="ten $adverb $hour_as_text"
|
|
elif (( minute < 18 ))
|
|
then
|
|
time_as_text="quarter $adverb $hour_as_text"
|
|
elif (( minute < 23 ))
|
|
then
|
|
time_as_text="twenty $adverb $hour_as_text"
|
|
elif (( minute < 28 ))
|
|
then
|
|
time_as_text="twenty-five $adverb $hour_as_text"
|
|
elif (( minute < 33 ))
|
|
then
|
|
time_as_text="half past $hour_as_text"
|
|
else
|
|
exit 1
|
|
fi
|
|
|
|
echo "$time_as_text"
|
|
|