A new way to handle dates and times is being added to JavaScript. Let's take a look at Temporal, what problems it solves, the current state, and what you'll find in the new documentation about it on MDN.
I’ll be very happy to not have to use Date any more. Pop quiz, what’s in whatnum?
const vday = new Date('14 February 2025');
const whatnum = vday.getDay() - vday.getMonth();
Err, it’s 5… Ha, amazing; that’s not even the gotcha I meant to demonstrate. getDay returns the day of the week, the day of the month is returned from getDate.
Take two:
const vday = new Date('14 February 2025');
const whatnum = vday.getDate() - vday.getMonth();
So this is 14 - 2 = 12, right? Nope! The day (from getDate) is 1-based whereas month is 0-based, so 14 - 1 = 13.
I’m quite lucky because I only had to solve an issue with JavaScript dates once, but what a nightmare it was… I had to understand how timezones worked, that was not fun!
Yeah, that one! It’s a pretty nice library. The difference between it and moment is that date-fns operates on standard Date objects, rather than having its own type
I’ll be very happy to not have to use
Date
any more. Pop quiz, what’s inwhatnum
?Err, it’s 5… Ha, amazing; that’s not even the gotcha I meant to demonstrate.
getDay
returns the day of the week, the day of the month is returned fromgetDate
.Take two:
So this is 14 - 2 = 12, right? Nope! The day (from getDate) is 1-based whereas month is 0-based, so 14 - 1 = 13.
I’m quite lucky because I only had to solve an issue with JavaScript dates once, but what a nightmare it was… I had to understand how timezones worked, that was not fun!
Man, I can’t remember the last time I used Date. I either use moment or… the other big one. I think it’s just a three letter name?
date-fns? It’s third in my search results but doesn’t ring any bells to me.
Yeah, that one! It’s a pretty nice library. The difference between it and moment is that date-fns operates on standard Date objects, rather than having its own type
Day.js possibly. It’s a near drop-in for moment since moment is deprecated.