---
title: "TIL: Why Date.parse gives unexpected results for GMT"
tags:
    - Javascript
    - TIL
date: 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](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/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 _today_[^1], 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](https://www.rmg.co.uk/stories/topics/uk-time-british-summer-time-bst-daylight-saving). So, when you parse that specific date, your timezone is actually `UTC+1`.

[^1]: Obviously this only breaks in the UK


