It handles ambiguity too. Want to say something lasts for a period of 1 month without needing to bother checking how many days are in the current and next month? P1M. Done. Want to be more explicit and say 30 days? P30D. Want to say it in hours? Add the T separator: PT720H.
I used this kind of notation all the time when exporting logged historical data from SCADA systems into a file whose name I wanted to quickly communicate the start of a log and how long it ran:
20230701T0000-07--P30D..v101_pressure.csv
(“--” is the ISO-8601 (2004) recommended substitute for “/” in file names)
If anyone is interested, I made this Bash script to give me uptime but expressed as an ISO 8601 time period.
There are two ways of writting dates: the "yyyy-mm-dd" one and the wrong one
ISO 8601 ftw. Here's the date, time, and duration for our next meeting:
2023-08-10T20:00:00PT2H30M
But where is a timezone?
PT, Pacific time. /s
Timezone is optional, and when missing is read as local time.
In my mind, default is UTC unless otherwise specified.
luckily Local time can be any timezone!
nearly forgot that 8601 has support for durations as well
It handles ambiguity too. Want to say something lasts for a period of 1 month without needing to bother checking how many days are in the current and next month?
P1M
. Done. Want to be more explicit and say 30 days?P30D
. Want to say it in hours? Add theT
separator:PT720H
.I used this kind of notation all the time when exporting logged historical data from SCADA systems into a file whose name I wanted to quickly communicate the start of a log and how long it ran:
20230701T0000-07--P30D..v101_pressure.csv
(“
--
” is the ISO-8601 (2004) recommended substitute for “/
” in file names)If anyone is interested, I made this Bash script to give me
uptime
but expressed as an ISO 8601 time period.