type Time.Zoned = iterative box choice {
.addDays(Int) => self,
.addMonths(Int) => self,
.addYears(Int) => self,
.day => Nat,
.format(String) => String,
.hour => Nat,
.instant => Time.Instant,
.minute => Nat,
.month => Nat,
.nanosecond => Nat,
.second => Nat,
.weekday => Time.Weekday,
.year => Int,
.zone => Time.Zone,
}
An instant seen through a time zone: a civil date-time with calendar fields.
.year — the year (can be negative for years before 1 CE).
.month — the month, 1 to 12.
.day — the day of the month, 1 to 31.
.hour — the hour, 0 to 23.
.minute — the minute, 0 to 59.
.second — the second, 0 to 59.
.nanosecond — the sub-second part, 0 to 999999999.
.weekday — the day of the week.
.zone — the time zone this date-time is in.
.instant — the underlying instant on the timeline.
.format(layout) — render using a strftime-style layout.
.addYears(n) — shift by whole years on the calendar, returning a new value.
.addMonths(n) — shift by whole months on the calendar.
.addDays(n) — shift by whole days on the calendar.
Calendar arithmetic (.addYears / .addMonths / .addDays) respects the
zone, including daylight-saving transitions. For exact arithmetic on the
timeline use Instant.add instead.