JavaScript Date Survivor

For everyone who has fought JavaScript's Date object and lived: zero-indexed months, surprise UTC, and an Invalid Date that is somehow still a Date.

Choose a format

Physical coins and stickers are coming soon. Until then, you can email this coin for free.

Meaning

For every developer who has fought JavaScript's Date object and lived: months that start at zero, new Date() silently switching between local time and UTC, Invalid Date that is somehow still a Date, and a timestamp that turns into NaN the moment a user crosses a time zone. The serpent has many heads, and every one of them is October 31st in a different time zone.

Design

Front (Obverse)

  • Outer rim: JAVASCRIPT DATE SURVIVOR ยท TRIUMPH OVER TZ CHAOS & ISO 8601
  • Inner ring: ORDER OF THE CHRONOS FIGHTER
  • Center: A frazzled developer in glasses and a hoodie marked "JS CODER" swings a sword engraved "MOMENT.JS" at a many-headed date serpent. A shield reading "JS DATE" is on his arm. The serpent's heads carry calendar pages (Oct 31, Nov 1, Feb 29), time-zone tags (GMT, PST, UTC) and a melting clock. A stone plaque at its feet reads "THE JAVASCRIPT DATE BEAST: Date.now() NaN, Month is 0-indexed". A banner below says "VANQUISHERS OF THE DATE APOCALYPSE". The field is engraved with faint Invalid Date and Date.now() text and small clocks.

Back (Reverse)

  • Top rim: OFFICIALLY RECOGNIZED
  • Bottom rim: WE SURVIVED THE CLOCK'S CHAOS
  • Center: The same developer, older and calmer, holds a clock face labeled Date.now() in front of a blue enameled shield. A steaming coffee mug is on one side and a cracked keyboard on the other. A banner across the middle reads "JAVASCRIPT DATE VETERAN", above "FOR SURVIVING TIMEZONE HELL & ZERO-INDEXED MONTHS", then the symbols { }, a NaN file and a UTC globe, and "EST. 1995", the year JavaScript was born.

Finish & Style

Antique bronze challenge coin, ~1.75" diameter, high-relief center scene, raised rim lettering, beaded outer edge, with a blue enamel accent on the reverse shield. Matches the existing ITChallengeCoins series.

How to Earn It

  • Fix a bug caused by JavaScript dates: a zero-indexed month, local time vs. UTC, Invalid Date, or a date that shifted by a day for users in another time zone.
  • Or migrate a codebase off hand-rolled date math (or off Moment.js) to a modern date library or the Temporal API.
  • Or ship a date picker that works in every time zone, including on the day daylight saving time changes.

Citation

For staring into new Date(2026, 1, 29) and refusing to blink, and for teaching a hundred thousand lines of JavaScript that a month is not an index.

An unhandled error has occurred. Reload ๐Ÿ—™

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.