Concepts & human language
What dates, times, instants, and zones actually mean — before any code.
What is "a time"?
Colloquial “around 3pm” vs precise to-the-millisecond — and how context sets the meaning.
What is "a date"?
A calendar day — birthday, civil date, contextual — and why it isn’t a point in time.
Instant vs civil time
The single most important distinction — a point on the timeline vs a reading on a calendar/clock.
Points vs periods
A value names a single point or a whole span — an axis orthogonal to instant-vs-civil, and one no type system models well.
Time zones vs offsets
A fixed +02:00 offset is not the same as a named zone like Europe/Paris.
DST & the edges
Spring-forward gaps make some local times nonexistent; fall-back overlaps make others ambiguous.
Durations & intervals
Spans vs points — and why “1 month” and “30 days” are not the same thing.
Wall clock vs monotonic
Which clock to use — one can jump backward, the other only ever moves forward.
The environment is an input
Your runtime carries implicit, mutable global state — the default zone, the locale, the clock, the bundled tz data — and any call that reads it silently inherits an answer you never chose.
Precision & resolution
Seconds, millis, micros, nanos — and the bugs born when systems disagree.
Calendars & leaps
Gregorian rules, leap years, leap seconds, and ISO week dates.