Production-focused date and timezone engineering

Build reliable JavaScript date/time features across locales and DST boundaries.

Practical guidance for full-stack teams working with `Date`, `Intl`, and `Temporal` in real-world apps. Learn strict parsing, UTC normalization, and explicit IANA timezone patterns that hold up in production.

About this guide

Dates are one of the most error-prone parts of any JavaScript codebase. The native Date object stores time as UTC internally but exposes confusingly named local-time methods, parses non-standard strings differently across browsers, and mutates in place β€” so the same code can show the wrong hour after a daylight saving change, count a day too many across a timezone, or break only for users in a single region.

This site is a working reference for getting it right. Every page pairs a clear explanation of the underlying model with copy-pasteable, TypeScript-first solutions: the legacy Date approach, the modern Intl and Temporal equivalent, and the edge cases β€” spring-forward gaps, fall-back overlaps, month-end rollovers, and leap years β€” that quietly cause production bugs. It is organized into three areas, from core fundamentals through locale-aware formatting to the immutable Temporal API.

Popular guides

Jump straight to the questions developers hit most often:

New to this? Start here

If you are modernizing an existing codebase, begin with the fundamentals to get the mental model straight, then move to Intl formatting, and finally adopt Temporal for new date logic.