tzdiff

Usage

Three subcommands, a handful of flags, no configuration.

Converting a single time

$ 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.

Comparing several zones

$ 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

Checking a DST transition

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.

Options

FlagMeaning
--from ZONESource zone. Defaults to the local zone.
--to ZONETarget zone. Repeatable.
--date YYYY-MM-DDDate to resolve against. Defaults to today.
--window A..BReport DST transitions in this range.
--format plain|tsv|jsonOutput format. tsv is the one you want for pipes.
--utcAlso print the UTC instant for each row.
--list PREFIXList known zone names matching a prefix.

Exit status

Ambiguous times are an error rather than a silent guess. A time that occurs twice on the night a clock goes back has two correct answers, and picking one for you is how bugs get into other people's schedules.