Three subcommands, a handful of flags, no configuration.
$ tzdiff --from Europe/Riga --to America/New_York 17:00
17:00 Europe/Riga -> 10:00 America/New_York (-7h, same day)
$ tzdiff --from Europe/Riga --to Pacific/Auckland 23:30
23:30 Europe/Riga -> 10:30 Pacific/Auckland (+11h, next day)
If --from is omitted, the local zone from TZ or
/etc/localtime is used. If the time is omitted, the current time is used.
$ tzdiff table --zones Europe/Riga,Asia/Tokyo,America/Denver 14:00
Europe/Riga 14:00 Fri
Asia/Tokyo 20:00 Fri
America/Denver 06:00 Fri
The flag most people actually need. It reports whether either zone shifts inside the window you are looking at, and by how much.
$ tzdiff --from Europe/Riga --to America/Chicago --window 2026-10-20..2026-11-10 09:00
Europe/Riga shifts 2026-10-25 03:00 -> 02:00 (-1h)
America/Chicago shifts 2026-11-01 02:00 -> 01:00 (-1h)
Offset between zones: -8h until 2026-10-25, -7h until 2026-11-01, -8h after.
| Flag | Meaning |
|---|---|
--from ZONE | Source zone. Defaults to the local zone. |
--to ZONE | Target zone. Repeatable. |
--date YYYY-MM-DD | Date to resolve against. Defaults to today. |
--window A..B | Report DST transitions in this range. |
--format plain|tsv|json | Output format. tsv is the one you want for pipes. |
--utc | Also print the UTC instant for each row. |
--list PREFIX | List known zone names matching a prefix. |
0 — conversion succeeded.1 — unknown zone name.2 — the given wall-clock time does not exist, or exists twice, because
of a DST transition. The message says which.