Represent Dates and Time Zones Without Losing Meaning
Separate calendar dates from timestamped events, use sortable formats, preserve time-zone context and document every temporal column before publishing.

A public table should not make readers guess whether 2026-09-21 means a calendar date, midnight in an unspecified zone or an event that happened at one exact moment.
Use a date-only value for a fact tied to a calendar day. Use a timestamp with an offset for an event tied to an instant. If the event’s local context matters, preserve the named time zone in another column.
Use one temporal meaning per column
| Meaning | Recommended value | Example column |
|---|---|---|
| Calendar date with no time of day | 2026-09-21 |
service_date |
| Exact event time in UTC | 2026-09-21T14:30:00Z |
occurred_at |
| Exact event time with source offset | 2026-09-21T10:30:00-04:00 |
occurred_at_source |
| Named zone whose rules matter | America/New_York |
source_time_zone |
| Time of day without a date | 09:30:00 |
daily_open_time |
Do not mix these meanings in one column. In particular, do not put 2026-09-21, 2026-09-21 10:30 and September 21 under the same header.
This separation matters in CSV because the file itself has no mechanism for declaring a column’s datatype. The W3C CSV on the Web primer therefore recommends supplying metadata that describes and validates tabular data.
Decide whether the value is a date or an instant
A local date answers “which calendar day?” Examples include a reporting date, school day, election date or service date. Store it as YYYY-MM-DD and do not append Z: adding midnight UTC would invent a time and zone that the source did not provide.
A timestamp answers “when did this event occur?” RFC 3339 defines a timestamp as an unambiguous representation of an instant and specifies the familiar YYYY-MM-DDTHH:MM:SS form followed by Z or a numeric offset (RFC 3339). Examples:
2026-09-21T14:30:00Z2026-09-21T10:30:00-04:00
Those two values can denote the same instant: a numeric offset is calculated as local time minus UTC. An offset is not, however, a complete set of regional time-zone rules.
Preserve a named zone when local context matters
Keep an IANA identifier such as America/New_York when readers may need to reconstruct local civil time, interpret a recurring schedule or audit the source’s conversion. The IANA Time Zone Database represents the history of local time for locations and is periodically updated when governments change offsets, boundaries or daylight-saving rules (IANA).
A practical published structure is:
record_id,service_date,occurred_at,source_time_zone
A17,2026-09-21,2026-09-21T14:30:00Z,America/New_York
A18,2026-09-22,2026-09-22T08:05:12Z,Asia/Tokyo
Here, service_date is a calendar classification defined by the dataset owner. It is not assumed to be the UTC date extracted from occurred_at.
If you receive only a local wall-clock value such as 2026-11-01 01:30, do not silently convert it. Ask for the zone and resolve any repeated or skipped local time according to a documented policy. Store the resulting instant, and retain the original local value when source fidelity is important.
Normalize the comparison column
For cross-region comparisons, publish one canonical instant column in UTC. Retain the source offset or named zone only where it helps readers audit or display local time.
This makes sorting predictable, but formatting must still be consistent. RFC 3339 says timestamp strings sort into time order only when their zones use the same representation and they have the same number of fractional-second digits. Therefore, choose one precision for the column:
2026-09-21T14:30:00Z
2026-09-21T14:30:01Z
or, if milliseconds are genuinely available:
2026-09-21T14:30:00.125Z
2026-09-21T14:30:01.000Z
Do not add .000 to imply source precision that was never measured. Record the dataset’s precision separately if it affects interpretation.
Avoid locale-dependent values such as 10/11/2026. RFC 3339 calls the equivalent two-field pattern unsuitable for global interchange because countries interpret it differently.
Document the columns before publishing
Add these items to the table description or spreadsheet data dictionary:
- Definition: what the date or timestamp represents.
- Datatype: date, time or timestamp.
- Format: for example,
YYYY-MM-DDor RFC 3339 in UTC. - Time-zone rule: UTC, source offset or named IANA zone.
- Precision: day, minute, second or millisecond.
- Missing-value rule: distinguish unknown from not applicable.
- Conversion policy: how local times were resolved and converted.
W3C’s tabular-data model supports separate metadata about tables and columns for validation, display and conversion (W3C). Even if you do not publish machine-readable CSVW metadata, put the same facts in the public page’s methodology or downloadable data dictionary.
Before upload, validate every nonblank value against the declared type, reject impossible calendar dates, parse every timestamp with an RFC 3339-aware parser and spot-check UTC conversions against the retained source zone. The result is a public table readers can sort and compare without mistaking a calendar label for an instant.