Time Zones#
Reference of time-zone identifiers, UTC offsets, and the operator-relevant gotchas: DST transitions, leap seconds, and the difference between fixed-offset (POSIX) and rule-based (IANA / tz database) zones.
The IANA time-zone database (tzdata) is the authoritative
source; zone1970.tab lists every zone. Operating systems,
languages, and databases all wrap it.
Common zones#
IANA name |
Offset |
Notes |
|---|---|---|
UTC |
+00:00 |
Coordinated Universal Time; reference. |
Etc/GMT |
+00:00 |
Etc zones use the opposite sign of common offsets: |
GMT |
+00:00 |
Greenwich Mean Time; civil time without DST. |
Europe/London |
+00:00 / +0 |
1 BST in summer. |
Europe/Dublin |
+00:00 / +0 |
1 IST in summer (note: Irish Standard Time, the summer offset, opposite of others). |
Europe/Lisbon |
+00:00 / +0 |
1 WEST in summer. |
Atlantic/Azores |
-01:00 / +0 |
0:00 |
Atlantic/Cape_Verde |
-01:00 |
no DST. |
Europe/Berlin |
+01:00 / +0 |
2 CET / CEST. |
Europe/Paris |
+01:00 / +0 |
2 |
Europe/Madrid |
+01:00 / +0 |
2 |
Europe/Rome |
+01:00 / +0 |
2 |
Europe/Amsterdam |
+01:00 / +0 |
2 |
Europe/Stockholm |
+01:00 / +0 |
2 |
Europe/Helsinki |
+02:00 / +0 |
3 EET / EEST. |
Europe/Athens |
+02:00 / +0 |
3 |
Europe/Bucharest |
+02:00 / +0 |
3 |
Europe/Kyiv |
+02:00 / +0 |
3 |
Europe/Istanbul |
+03:00 |
Türkiye; no DST since 2016. |
Europe/Moscow |
+03:00 |
no DST since 2014. |
Africa/Cairo |
+02:00 / +0 |
3 DST reintroduced 2023. |
Africa/Lagos |
+01:00 |
no DST. |
Africa/Johannesburg |
+02:00 |
no DST. |
Africa/Nairobi |
+03:00 |
- |
Asia/Dubai |
+04:00 |
no DST. |
Asia/Tehran |
+03:30 / +0 |
4:30 DST removed 2022. |
Asia/Kabul |
+04:30 |
- |
Asia/Karachi |
+05:00 |
- |
Asia/Tashkent |
+05:00 |
- |
Asia/Kolkata |
+05:30 |
no DST; was Asia/Calcutta. |
Asia/Kathmandu |
+05:45 |
45-min offset. |
Asia/Yangon |
+06:30 |
- |
Asia/Bangkok |
+07:00 |
- |
Asia/Jakarta |
+07:00 |
- |
Asia/Singapore |
+08:00 |
no DST. |
Asia/Hong_Kong |
+08:00 |
- |
Asia/Shanghai |
+08:00 |
single zone for all of mainland China. |
Asia/Taipei |
+08:00 |
- |
Asia/Manila |
+08:00 |
- |
Asia/Tokyo |
+09:00 |
- |
Asia/Seoul |
+09:00 |
- |
Asia/Pyongyang |
+09:00 |
- |
Australia/Perth |
+08:00 |
- |
Australia/Adelaide |
+09:30 / +1 |
0:30 DST. |
Australia/Sydney |
+10:00 / +1 |
1 |
Australia/Brisbane |
+10:00 |
no DST. |
Pacific/Auckland |
+12:00 / +1 |
3 DST. |
Pacific/Chatham |
+12:45 / +1 |
3:45 unusual 45-min offset. |
Pacific/Honolulu |
-10:00 |
Hawaii; no DST. |
America/Anchorage |
-09:00 / -0 |
8 |
America/Los_Angeles |
-08:00 / -0 |
7 PST / PDT. |
America/Vancouver |
-08:00 / -0 |
7 |
America/Denver |
-07:00 / -0 |
6 |
America/Phoenix |
-07:00 |
no DST (Arizona). |
America/Chicago |
-06:00 / -0 |
5 CST / CDT. |
America/New_York |
-05:00 / -0 |
4 EST / EDT. |
America/Toronto |
-05:00 / -0 |
4 |
America/Halifax |
-04:00 / -0 |
3 |
America/St_Johns |
-03:30 / -0 |
2:30 30-min offset. |
America/Sao_Paulo |
-03:00 |
no DST since 2019. |
America/Buenos_Aire |
s -03:00 |
no DST. |
America/Mexico_City |
-06:00 / -0 |
5 DST removed 2022. |
Pacific/Pago_Pago |
-11:00 |
American Samoa. |
Pacific/Apia |
+13:00 |
Samoa; switched east-of-IDL to west in 2011. |
Pacific/Kiritimati |
+14:00 |
Kiribati; furthest east. |
Etc / POSIX zones#
The Etc/ zones are sign-inverted from the common notation:
Etc/GMT+5 is UTC-5 (the Americas), Etc/GMT-5 is UTC+5
(the East). This follows POSIX TZ-string convention, which
defines positive offsets west of the meridian, and
contradicts the ISO 8601 sign convention. Operationally this
catches everyone at least once.
DST and DST-free#
Region |
Notes |
|---|---|
DST observed |
North America (most), Europe (entire bloc), parts of South America, Australia (some states), New Zealand, Iran (until 2022), Israel, Palestine. |
DST not observed |
Most of Africa and Asia (incl. China, India, Japan, Korea, Singapore, Indonesia, Saudi Arabia, all GCC), Russia (since 2014), Türkiye (since 2016), Mexico (since 2022), Brazil (since 2019), Argentina, Iceland, Hawaii, Arizona (US), most equatorial countries. |
EU “directive” |
EU 2019 directive proposed ending DST changes; never implemented. |
US Sunshine Protect |
. Bill passed Senate 2022; never enacted. |
Leap seconds#
Concept |
Notes |
|---|---|
TAI |
International Atomic Time; monotonic. |
UTC |
Civil time; periodic leap-seconds keep within ±0.9 s of UT1. |
TAI - UTC |
37 seconds (since Jan 1, 2017). |
GPS time |
TAI - 19 s; offset from UTC = 18 s (since 2017). |
Leap-second list |
IERS Bulletin C; new leaps announced ~6 months ahead. |
Smearing |
Google / AWS / Facebook smear leap seconds across the day to avoid 23:59:60 timestamps. |
Future |
ITU-R 2022 vote: pause leap seconds by 2035. |
Tooling#
Tool |
Notes |
|---|---|
|
POSIX; respects TZ env var. |
|
/usr/share/zoneinfo on Linux / macOS. |
|
systemd; query / set zone + NTP state. |
|
interactive zone picker (POSIX). |
Python |
stdlib since 3.9; reads tzdata. |
Python |
legacy. |
JS |
browser-side. |
JS |
/ |
Java |
from JDK 8; reads tzdata. |
Go |
reads /usr/share/zoneinfo. |
Postgres |
stored as UTC; returned in session zone. |
MySQL |
requires loaded mysql.time_zone tables. |
Operator notes#
Always log in UTC; convert to local for presentation only.
timestamptz != timestamp, “with time zone” stores a point in time; “without time zone” stores wall-clock-naive.
DST transitions, 02:00 ambiguous in fall (occurs twice), non-existent in spring (skipped). Cron jobs at 02:30 daily run twice / not at all on the transition day; use UTC schedules.
TZ database revisions, shipped quarterly+; old tzdata produces incorrect conversions (recent: Mexico 2022, Iran 2022, Greenland 2024). Update your runtime + DB containers.
POSIX TZ vs IANA, POSIX strings (
EST5EDT,M3.2.0,M11.1.0) ignore historical zone changes; prefer IANA names.Leap-second smearing, pin every cluster to one smear policy; mixing causes second-level skew that breaks consensus protocols.
No “abbreviation” is unique, “CST” is China Std Time, Central Std Time (US), Cuba Std Time, Central Std Time (AU). Always use full IANA names in code and storage.
References#
IANA Time Zone Database, the standard tzdata source.
IETF tz mailing list archive, changes discussed.
time.is, per-zone clock and offset.
Microsoft Time Zone Index, Windows ↔ IANA mapping.
IERS Bulletin C, leap second announcements.
strftime, format codes for timestamp strings.
Countries, ISO codes per country.