I have a variable of $i which is seconds in a shell script, and I am trying to convert it to 24 HOUR HH:MM:SS. Is this possible in shell?
Advertisement
Answer
Here’s a fun hacky way to do exactly what you are looking for =)
date -u -d @${i} +"%T"
Explanation:
- The
dateutility allows you to specify a time, from string, in seconds since 1970-01-01 00:00:00 UTC, and output it in whatever format you specify. - The
-uoption is to display UTC time, so it doesn’t factor in timezone offsets (since start time from 1970 is in UTC) - The following parts are GNU
date-specific (Linux):- The
-dpart tellsdateto accept the time information from string instead of usingnow - The
@${i}part is how you telldatethat$iis in seconds
- The
- The
+"%T"is for formatting your output. From theman datepage:%T time; same as %H:%M:%S. Since we only care about theHH:MM:SSpart, this fits!