Reddit - r/programming

Your JS Date Is Lying to You - the traps that keep shipping to production

Most JavaScript developers have been burned by Date at least once: a report that's off by a day, an invoice that lands in the wrong month, a timezone bug that only appears in certain regions.

A writeup on the main failure modes with production examples:

  • new Date('2026-07-21') parsed as UTC, displayed as local: date shifts by a day west of UTC.
  • Constructor months are 0โ€‘based, so new Date(2026, 7, 21) is August.
  • Every set* method mutates in place, including across shared references.
  • "add one month" and "add 30 days" are not the same operation and can diverge by days near month boundaries.
  • JSON.stringify drops timezone context silently.

Each section also covers what safe Date patterns look like for code that can't migrate yet, and where Temporal fixes the design rather than just adding a wrapper.

Comments

No comments yet. Start the discussion.