Visual RFC.
ALL RFCs / RFC 3339
Read the RFC ↗
RFC 3339 / INTERNET TIMESTAMPS

Check calendar limits and leap-second context

04

Correct punctuation is only the first check. Calendar days, clock ranges and leap-second events constrain which field values make sense.

RFC 3339 · § 5.7EXAMPLE
5 / 5
Check calendar limits and leap-second contextSeparate gates reject April 31, distinguish invalid 1900-02-29 from valid 2000-02-29 using the Gregorian century exception, and reject hour 24 in this profile. The published positive leap insertion runs through 1990-12-31 UTC seconds 59, 60, then 1991-01-01 second 00; 15:59:60-08:00 denotes the same leap instant. The final conditional negative leap goes from 58 to next-minute 00 without asserting a real event. Leap validation needs authoritative event context.Calendar and clock constraints · separate casesConditional negative leap onlyLast second: :58 → next minute :00The second :59 would be absentNo real event is asserted here:58 → next :00Never infer a leap event from a month name alone
05
A removed leap second would skip 59.

Conditional example only: if a negative leap second were announced, the last minute would proceed from :58 directly to the next minute’s :00. This is not a claim that such an event occurred.

Source for this drawing: RFC 3339 · Read RFC section 5.7 ↗

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
New to this? Start hereA quick picture + helpful background

A message needs an address.

Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.

Start with this guide; no earlier guide is needed for the overview.

These pictures are analogies to help you learn. The linked RFC explains the actual rules.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

KEY POINT

Validate the calendar and the actual leap context.

  • Day limits depend on month and Gregorian leap year. A year divisible by 4 is a leap year, except centuries must be divisible by 400. The clock hour in this profile is 00–23, even where other ISO forms permit 24.
  • Ordinary seconds run 00–59. An announced inserted leap second permits 60 at the relevant UTC boundary; in another offset it occurs at the same instant with a shifted local clock.
  • A removed leap second would leave 58 as the last second before the next minute. Leap events cannot be predicted far ahead, and applications should not generate inserted-leap timestamps before announcement.
DETAILS

The positive-leap examples are published in §5.8: 1990-12-31T23:59:60Z and 1990-12-31T15:59:60-08:00. The negative-leap illustration is conditional and names no actual event. Appendix D is a historical list, not a current announcement service. The bounded teaching helper handles the published 1990 event separately from ordinary date arithmetic and does not pretend a platform Date parser validates leap seconds.

Read the RFC section ↗

All chapters in RFC 3339

Drawing view

Scroll the drawing to see every part. Playback controls stay above it.

RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗