People often use short timezone abbreviations like EST and PST to refer to timezones. If you're doing this in a computer program, you are almost certainly making a huge mistake. Let's take take a look, using the disastrously bad unix libc timezone tools, which you're almost certainly using under the hood if you're writing software on Linux or OSX.
$ TZ=UTC date Wed 10 Feb 2021 12:00:00 AM UTC
Alright, this looks good. Let's try to see what time it is in New York:
$ TZ=America/New_York date Tue 09 Feb 2021 07:00:00 PM EST
Makes sense, New York is 5 hours behind UTC. It outputs the time as
EST, so presumably we can use that as a
$ TZ=EST date Tue 09 Feb 2021 07:00:00 PM EST
Which looks like it works! But that's actually an illusion — say we tried doing this in July, instead of February:
$ TZ=America/New_York date Fri 09 Jul 2021 08:00:00 PM EDT
Now we're in EDT, since it's daylight saving time. Makes sense, let's just plug that into
TZ and see what happens:
$ TZ=EDT date Sat 10 Jul 2021 12:00:00 AM EDT
And hang on,
EDT gives us the time in
UTC! What's going on here?
Well, it turns out that
EDT isn't a valid timezone, and
date silently ignores the incorrect timezone variable:
$ TZ=LOL_THIS_DOESNT_EXIST date Sat 10 Jul 2021 12:00:00 AM LOL
date "helpfully" ignores that the timezone is invalid, and outputs the date in UTC, but using the text of the invalid timezone. Which is horrifying, but wait, why isn't EDT a valid timezone? I'm not sure what the actual reason is, but one reason that it's not correct in the general case to use the short timezone codes is that they aren't actually unique:
$ TZ=America/Chicago date Tue 09 Feb 2021 06:00:00 PM CST $ TZ=Asia/Taipei date Wed 10 Feb 2021 08:00:00 AM CST
There are actually two timezones that are canonically named "CST", and they're 14 hours apart! The format that
date outputs things in causes there to be two distinct moments in time that correspond to any date outputted in the
America/Chicago timezones, and there's no way to tell which is which by looking at it — what fun!
There is no good reason to use short timezone codes like EST, CST, PST — doing so will only bring you pain. Either use the tzdb name like
America/New_York, or use an offset from UTC, depending on what you want.