lewisdale.dev/src/blog/posts/2024/2/why-is-date.parse-weird-in-gmt.md
Lewis Dale 8d2c1da6f1
All checks were successful
Build and copy to prod / build-and-copy (push) Successful in 1m53s
Add explicit dates to posts
2024-03-08 07:14:42 +00:00

1.2 KiB

title tags date
TIL: Why Date.parse gives unexpected results for GMT
Javascript
TIL
2024-02-12T14:53:51Z

TL;DR: Timezones are weird

Someone posted about this in a Discord server I'm on: Javascript's Date object has a parse function, Date.parse that takes a string can converts it to a timestamp. If you give it a non-standard string, in this case Jan 1, 1970, it should still parse it.

The problem is though, that even though we're in GMT, and GMT == UTC, Date.parse("Jan 1, 1970") results in a timestamp of -3600000, or Dec 31, 1969 23:00:00. If you explicitly add the GMT timezone, it's fine.

It turns out that if you omit the timezone, Date.parse will use your system timezone - now in my case that's GMT today1, but if I were to go back to 1970 I'd actually find that I'd be in BST. This is because the government experimented with scrapping daylight savings. So, when you parse that specific date, your timezone is actually UTC+1.


  1. Obviously this only breaks in the UK ↩︎