The difference of two timepoints may be used to compute a time interval, and an interval added to a timepoint to create another timepoint. Intervals are ordinary physical dimension quantities with dimension of time, and may be format for input or output in several ways. The reader macro #d and the function read-time will read in an interval in ISO8601 format; it should begin with “P” as required by that standard.
All components are of fixed size; for example, a month is 30 days, and a year is 12 months. This may produce some odd-looking results because a year will have only 360 days.
ANTIK-USER> (+ #d2011-08-01T12:00 #DP1m3d)
2011-09-03 12:00:00.000
ANTIK-USER> (- #d2011-09-03T12:00:00.000 #d2011-08-01T12:00)
#dP1m3dT
ANTIK-USER> (- #d2011-09-03T12:00:00.000 #d2010-09-03T12:00:00.000)
#dP1y5dT
Formatting for an interval is specified by setting the nf parameter :time to :tud for an ISO8601 time unit designator, :alternative for the ISO8601 alternate, or nil for the physical dimension time. Default is :tud.
ANTIK-USER> (set-nf-options :time :tud)
ANTIK-USER> #_12345_seconds
#dPT3h25m45.000s
ANTIK-USER> (set-nf-options :time nil)
NIL
ANTIK-USER> #dP8m3dT5h
#_21013200.000000000000000d0_s