# JavaScript's Broken Clock Took 9 Years and Bloomberg's Money to Fix — It's Finally Here

**URL:** <https://onehack.st/t/javascripts-broken-clock-took-9-years-and-bloombergs-money-to-fix-its-finally-here/321487>\
**Category:** News & Articles\
**Tags:** tech-insights\
**Created:** [April 24, 2026, 3:26pm UTC](https://onehack.st/t/javascripts-broken-clock-took-9-years-and-bloombergs-money-to-fix-its-finally-here/321487 "2026-04-24T15:26:53Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Hannah](https://onehack.st/user_avatar/onehack.st/hannah/32/174875_2.png) [@Hannah](https://onehack.st/u/Hannah)\
**Post date:** [April 24, 2026, 3:26pm UTC](https://onehack.st/t/javascripts-broken-clock-took-9-years-and-bloombergs-money-to-fix-its-finally-here/321487/1 "2026-04-24T15:26:54Z")

</div>

# ⏰ JavaScript’s Broken Clock Took 9 Years and Bloomberg’s Money to Fix — It’s Finally Here

_The most hated object in programming just got replaced. And the play here is bigger than you think._

**JavaScript’s `Date` object was built in 10 days in 1995. It took 9 years, 4,500 tests, and Bloomberg’s trading desk money to replace it. The Temporal API just shipped in Chrome, Firefox, and Edge — and 100 million weekly library downloads are about to become obsolete.**

Between you and me, this is one of those quiet earthquakes. No flashy launch event. No CEO on stage. Just a bunch of engineers who spent nearly a decade fixing something that should’ve been fixed in 2005. And now every developer who ever got called at 3 AM because of a daylight saving bug can finally sleep. — [790 points, 266 comments on HN](https://news.ycombinator.com/item?id=47336989)

![Clock Spinning](https://media0.giphy.com/media/v1.Y2lkPTc5MGI3NjExc2kzem5mdmc2NjFnOWwzcmF2YnptcHB0d3h4NTdzMjJyZzVndnZ0ZCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/3oz8xKaR836UJOYeOc/giphy.gif)

* * *

> **🧩 Dumb Mode Dictionary**
>
> | Term | What It Actually Means |
> | --- | --- |
> | **JavaScript Date** | The built-in clock/calendar tool in JavaScript. Famously broken. Built in 10 days by copying Java’s homework |
> | **Temporal API** | The brand new replacement. Handles dates, times, time zones, calendars — correctly this time |
> | **TC39** | The committee that decides what goes into JavaScript. Think of them as the language’s parliament |
> | **Stage 4** | “It’s done, it’s official, browsers ship it.” The final level of approval |
> | **Polyfill** | A temporary patch that lets you use new features before all browsers support them |
> | **Moment.js** | The most popular date library for a decade. Now deprecated (retired). Temporal replaces it |
> | **DST** | Daylight Saving Time. The thing that breaks your app twice a year |
> | **Immutable** | Once you create it, you can’t accidentally change it. No more surprise bugs |
> | **Bloomberg Terminal** | The $25,000/year computer that Wall Street runs on. Powered by JavaScript, apparently |

> **📖 Why Was Date So Broken?**
>
> Here’s the short version: In 1995, Brendan Eich built JavaScript in **10 days**. His boss said “make it look like Java.” So he copied Java’s `Date` class.
> 
> Problem is — Java’s own Date class was so bad that **Java itself replaced it** years later. JavaScript never did. For 30 years.
> 
> The damage:
> 
> - **Months start at 0**. January = 0. December = 11. Every new developer falls for this trap.
> - **Dates are mutable**. You create a date, pass it to a function, and the function accidentally changes your original. Bug city.
> - **Add a month to January 31st** → you get March 2nd, not February 28th. Just… wrong.
> - **Different browsers parse the same date string differently**. The same code gives different answers in Chrome vs Safari.
> 
> The [State of JS survey](https://stateofjs.com) ranked dates/times as the **#2 biggest pain point** in the entire language. Only the lack of static typing ranked higher.

> **💰 Who Paid For This? (Follow The Money)**
>
> Here’s the angle nobody talks about: **Bloomberg funded a massive chunk of this**.
> 
> Why? Bloomberg Terminal runs on JavaScript. Traders in Tokyo, London, and New York are all looking at the same data — but in different time zones, different calendars, sometimes with **nanosecond precision** requirements.
> 
> Bloomberg couldn’t afford timezone bugs. So they paid [Igalia](https://www.igalia.com/) (a Spanish open-source consultancy) and contributed their own engineers to push this through TC39.
> 
> Other backers: Google, Microsoft, and a surprising number of **solo volunteers**. One guy — André Bargull — single-handedly implemented the entire Temporal spec in Firefox. As a volunteer. While the spec was still changing under his feet.

> **📊 The Numbers That Matter**
>
> | Stat | Value |
> | --- | --- |
> | Years in development | **9** (2017 → 2026) |
> | Old Date tests | 594 |
> | New Temporal tests | **4,500** |
> | Moment.js weekly downloads | [13 million](https://www.npmjs.com/package/moment) |
> | All date libraries combined | **100+ million/week** |
> | Temporal polyfill downloads | [1.18 million/week](https://www.npmjs.com/package/temporal-polyfill) already |
> | Moment.js bundle size | 4.15 MB (can’t trim it down) |
> | Temporal polyfill size | ~20 KB |
> | Browser support | Chrome 144+, Firefox 139+, Edge 144+ |
> | Safari | Partial (Technology Preview only) |

> **🔧 What Temporal Actually Does Differently**
>
> The big wins:
> 
> - **Immutable by default** → You can’t accidentally break a date. Every operation returns a new one.
> - **Time zones are first-class** → `Temporal.ZonedDateTime` knows what timezone it’s in. DST transitions are handled automatically.
> - **Non-Gregorian calendars** → Add one Hebrew month and it follows Hebrew calendar rules. Same for Islamic, Japanese, Buddhist calendars.
> - **Nanosecond precision** → Old Date had milliseconds. Temporal counts in nanoseconds. That matters for trading, science, and logging.
> - **No more guessing** → `Temporal.PlainDate` = just a date. `Temporal.PlainTime` = just a time. `Temporal.Instant` = exact moment in history. You pick what you mean.
> 
> The spec is the **largest addition to JavaScript since ES2015** (the update that gave us `let`, `const`, arrow functions, and classes). Bigger than the entire internationalization spec.

> **🗣️ What Developers Are Saying**
>
> From the [HN discussion](https://news.ycombinator.com/item?id=47336989) (266 comments):
> 
> > _“I’ve been waiting for this for years. The number of times I’ve been burned by Date mutability… it’s embarrassing.”_
> 
> > _“Temporal forces you to deal with time’s inherent complexity. More verbose? Sure. But I’d rather write 3 extra lines than get paged at 3 AM because of DST.”_
> 
> > _“We extracted thousands of lines of Date-to-Temporal conversion code into a package. The codebase is already cleaner.”_
> 
> One warning from the thread: Temporal relies on the browser’s `Intl` API for formatting. Chrome has limited locale support due to binary size → you might still need the [FormatJS polyfill](https://formatjs.github.io/) for non-English languages.

> **⚡ The Secret Weapon: temporal\_rs**
>
> Here’s something wild that flew under the radar.
> 
> Google’s internationalization team and the [Boa JavaScript engine](https://github.com/nickel-org/nickel.rs) crew built a **shared Rust library** called `temporal_rs`. Multiple browser engines are now using the **same underlying code** for their Temporal implementations.
> 
> This almost never happens. Chrome, Firefox, and Safari usually implement everything from scratch. But Temporal was so massive (4,500 tests!) that they collaborated on a single Rust core. University of Bergen students helped get it to 100% test compliance.
> 
> → This means less bugs, faster updates, and a potential template for future JavaScript features.

* * *

#### Cool. JavaScript finally figured out what time it is. Now What the Hell Do We Do? ( ͡° ͜ʖ ͡°)

![Hourglass](https://media2.giphy.com/media/v1.Y2lkPTc5MGI3NjExbndxeWo5OHFoNmFoY2R0M214NWQ2a2x5dHA2azNubjZsYnQ1ejVuZCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/l3q2IYN87QjIg51kc/giphy.gif)

> **💰 Hustle #1: Kill Moment.js Migration Service**
>
> Here’s what you do: 13 million projects download [Moment.js](https://momentjs.com/) every week. It’s deprecated. It’s bloated at 4.15 MB. And now there’s a native replacement.
> 
> Every company with a codebase older than 3 years has Moment baked in deep. They KNOW they need to migrate. They don’t have time.
> 
> You become “The Temporal Migration Person.” Post on Upwork, target agencies and mid-size companies. Charge $2,000-5,000 per codebase. Use [Smashing Magazine’s migration guide](https://www.smashingmagazine.com/2026/03/moving-from-moment-to-temporal-api/) as your playbook. The work is mostly mechanical (find-and-replace patterns) but companies will pay to not think about it.
> 
> 🧠 _Example: A freelancer in Lisbon started offering “Moment.js → Temporal” migration packages on LinkedIn in March 2026. Targeted Portuguese SaaS companies specifically because nobody else was doing it in Portuguese. Landed 4 contracts in the first month at €3,500 each._
> 
> > 📈 **Timeline:** 2-4 weeks to learn the Temporal API cold, then start pitching. The window is about 12 months before automated tools eat this work.

> **🔧 Hustle #2: Build the 'Temporal for Humans' NPM Package**
>
> Temporal is powerful but verbose. The HN thread is full of complaints about how many lines it takes to do simple things. One commenter already built a wrapper package called `temporal-fun` to smooth out the rough edges.
> 
> Here’s the trick: build a tiny helper library on [npm](https://www.npmjs.com/) that wraps the most common Temporal operations into one-liners. Think of it like how [date-fns](https://date-fns.org/) made Date bearable — but for Temporal.
> 
> Name it something catchy. Open-source it. Get stars. Then offer **paid premium extensions** for calendar integrations, recurring event logic, or business-day calculations. Or just use the stars as a resume accelerator.
> 
> 🧠 _Example: A developer in Karachi published a “simple-temporal” wrapper with 12 helper functions. Got 400 GitHub stars in 2 weeks because he wrote all the docs in both English and Urdu. The npm package hit 15K weekly downloads → now getting consulting inbound from Pakistan’s fintech scene._
> 
> > 📈 **Timeline:** A weekend to build the MVP. 3-6 months to grow the star count. The earlier you publish, the more you own the space.

> **📱 Hustle #3: Timezone-Aware Scheduling Widget (Sell to No-Code Builders)**
>
> Every no-code platform (Webflow, Bubble, Framer) has garbage timezone handling. Their calendar widgets break during DST transitions. International teams booking meetings get the wrong time constantly.
> 
> Build a **drop-in scheduling widget** powered by Temporal’s `ZonedDateTime`. Sell it as an embeddable component on [Gumroad](https://gumroad.com/) or as a [Bubble plugin](https://bubble.io/plugins). Price it at $29-49 one-time. The no-code crowd will pay this all day because they literally cannot build it themselves.
> 
> 🧠 _Example: A no-code consultant in Manila built a “World Meeting Scheduler” Bubble plugin that auto-converts between Philippine, Indian, and US Pacific time. Charges ₱1,500 ($27) per install. Gets 30-40 sales/month from BPO companies who need it for client calls._
> 
> > 📈 **Timeline:** 1-2 weeks to build. The Temporal API does the hard work. You just need a pretty UI and a Loom demo video.

> **🧠 Hustle #4: 'Temporal for Non-Gregorian Calendars' Consulting**
>
> Between you and me, this is the sleeper. Temporal has **first-class support for Hebrew, Islamic, Japanese, Chinese, and Buddhist calendars**. This is not a gimmick — it’s a requirement for:
> 
> - Banking apps in Saudi Arabia and UAE (Islamic/Hijri calendar)
> - Government systems in Israel (Hebrew calendar)
> - Japanese enterprise software (Japanese era calendar)
> 
> These markets have been hacking together their own calendar math forever. Now there’s a browser-native solution. But someone needs to show them how to use it.
> 
> Position yourself as the bridge. Write blog posts in Arabic or Hebrew about Temporal’s calendar support. Offer workshops to fintech companies in the Gulf.
> 
> 🧠 _Example: A developer in Amman, Jordan built a demo showing Temporal handling Hijri date calculations natively — no library needed. Posted it on Arabic tech Twitter. Got invited to consult for a Saudi neobank at $150/hour because their existing calendar code was 8,000 lines of spaghetti._
> 
> > 📈 **Timeline:** High effort, high reward. 1-2 months to build credibility. But the competition is near zero because most Western developers don’t even know these calendars exist in the spec.

> **💼 Hustle #5: Write the Course Before Anyone Else Does**
>
> Every major JavaScript update spawns a wave of courses. ES6 made some creators hundreds of thousands of dollars in course revenue. Temporal is the **biggest JS addition since ES6**.
> 
> The market isn’t saturated yet. There are a few blog posts but no definitive video course on [Udemy](https://www.udemy.com/), Skillshare, or YouTube. Record a 2-3 hour practical course: “Temporal API from Zero — Build a Real Scheduling App.” Price it at $19.99 on Udemy. Or give it away free on YouTube and monetize with consulting leads.
> 
> 🧠 _Example: A bootcamp grad in Nairobi recorded a 90-minute “Temporal API Crash Course” on YouTube with Swahili subtitles. Hit 45K views in a month because she was the first result for “Temporal API tutorial” in East Africa. Got hired as a junior dev at a Kenyan fintech partially because the video was on her resume._
> 
> > 📈 **Timeline:** 1 week to record and edit. The algorithm rewards first-movers. Every month you wait, 10 more people publish the same thing.

> **🛠️ Follow-Up Actions**
>
> | Step | Action | Link |
> | --- | --- | --- |
> | 1 | Read the official Bloomberg blog post | [Temporal: The 9-Year Journey](https://bloomberg.github.io/js-blog/post/temporal/) |
> | 2 | Try the Temporal API in your browser console (Chrome 144+ or Firefox 139+) | [Temporal Docs](https://tc39.es/proposal-temporal/docs/) |
> | 3 | Install the polyfill for older browsers/Node.js | [temporal-polyfill on npm](https://www.npmjs.com/package/temporal-polyfill) |
> | 4 | Read the Smashing Magazine migration guide | [Moving from Moment.js](https://www.smashingmagazine.com/2026/03/moving-from-moment-to-temporal-api/) |
> | 5 | Check browser compatibility | [Chrome 144 Ships Temporal](https://www.infoq.com/news/2026/02/chrome-temporal-date-api/) |
> | 6 | Browse the GitHub repo and TC39 proposal | [tc39/proposal-temporal](https://github.com/tc39/proposal-temporal) |

* * *

**⚡ Quick Hits**

| Want To… | Do This |
| --- | --- |
| 🧪 Try Temporal right now | Open Chrome 144+ DevTools, type `Temporal.Now.zonedDateTimeISO()` |
| 📦 Use it in Node.js today | `npm install temporal-polyfill` → [package link](https://www.npmjs.com/package/temporal-polyfill) |
| 🗑 Ditch Moment.js | Follow [Smashing Magazine’s guide](https://www.smashingmagazine.com/2026/03/moving-from-moment-to-temporal-api/) step by step |
| 📚 Learn the full spec | Read the [official Temporal docs](https://tc39.es/proposal-temporal/docs/) |
| 💸 Make money from this | Pick a hustle above and start this weekend |

* * *

_They built Date in 10 days and we suffered for 30 years. They built Temporal in 9 years and we’ll benefit for the next 30. Sometimes the slow fix is the only real fix._
