Actual browser values

Wed 2019-12-10 17:19:00 UTC-05:00
Thu 2019-09-17 11:12:13 UTC+02:00 (Local time)
Thu 2019-09-17 09:12:13 Z (Zulu)

Configuration

Analyzing table

Local wall-times in various time zones according to the simulated current time value (when defined) or actual current time (default). If you want an analog wall of times, you can try the NNM Clock.
?? TZ identifier TZ named offset ↓ UTC offset Diff Local date Local time Zoned datetime

Documentation

NNM Time zones - an educational analyzing tool for playing around with time zones. You can either view real local times around the globe or simulate different time zones and different local times.

Enhance your knowledge and dig deep into time zones.

Friendly reminder: As always, you have to be careful when analyzing future datetime values, since they may or may not be what you expect when the time comes! Time zone rules are changing all the time! The only times you can trust are those in the past.

Note: Since JavaScript and also Luxon have poor support of the basic time zone functionality of getting a proper list of time zone identifiers, the list of identifiers you can choose from are at the moment only a hardcoded subset (still way over 300 though). The "area/location" identifiers are most of the time zones with status "canonical" from the list of tz database time zones (release 2020e).

Note: Since most time zone abbreviations (like CET, EST, PST) are completely useless, they are not found in any of the time zone lists. Only time zone identifiers (area/location) and offsets are supported (and of course the almighty UTC).

Analyzing table

Time zones currently using daylight saving time are indicated with a in the UTC offset column.

Some rows in the table are marked with different background colors for easier recognition:

Zulu time (the one and only time to really care about)
Current simulated or real browser time
Primary time zone to compare

You can link directly to the analyzing table, by appending the fragment URL #analyzingTable, for example https://anders.nemonisimors.com/projects/timeZones/#analyzingTable.

Access keys

The following access keys are used for your convenience:

Using GET parameters in URL

By defining parameters in your URL you can easily link to specific views of the analyzing table.

The following parameters can be used:

dateTime
Denotes simulated current local datetime. Must be in ISO 8601 extended format, for example dateTime=2019-11-07T23:45:00. If defined, simulated mode is activated. If missing, real-time mode is used.
tzIdentifier
Denotes simulated current local time zone. For example tzIdentifier=America/New_York. If missing, your browser's actual time zone will be used.
tzComparing
Denotes primary comparing time zone. For example tzComparing=Europe/Paris. If missing, the default comparing time zone (currently America/Los_Angeles) is used.
tz
List of time zones that should be shown in the analyzing table. For example tz=America/New_York&tz=America/Los_Angeles&tz=Australia/Perth. If missing, the default time zones are shown. This parameter can be used to add your own identifiers.

None of the parameters are mandatory. All parameters can be used independently.

If you want to use positive UTC offsets, you may skip the plus as prefix. For example, use tz=05:00 instead of tz=+05:00 (since otherwise you must properly URL encode the + with a %2B, e.g. tz=%2B05:00).

Examples

Note: I would argue that the UTC±99:55 time zones are no crazier than any of the other time zones that we are using.

Summary and conclusions

Even though I have implemented this tool, I truly advocate that time zones should be destroyed. I am even more convinced than before, now that I have worked with a project that literally has to deal with time zones complexity and some of all the peculiar quirks.

Although it has been a fun project, it is way too many moving parts involved, so the risk of errors when handling different time zones is high. The daylight saving time complexities, erroneous implementations and updates of the actual rules for some of the time zone identifiers and datetime values in the future are probably the worst parts. The only thing you can be sure of is that errors exist, or as Edsger Dijkstra put it: Testing can show the presence of errors, but not their absence.

About

NNM Time zones is built with plain JavaScript and styling is made with help from Bootstrap (v5.3.2). The JavaScript datetime logic is accompanied by the Luxon (v3.4.4) date and time handling library (since you never ever want to be on your own when dealing with time zones in programming). Luxon has great documentation about time zones and please, pay special attention to the section about DST weirdness, containing interesting information like:

Because our ancestors were morons, they opted for a system wherein many governments shift around the local time twice a year for no good reason. And it's not like they do it in a neat, coordinated fashion. No, they do it whimsically, varying the shifts' timing from country to country (or region to region!) and from year to year. And of course, they do it the opposite way south of the Equator. This is all a tremendous waste of everyone's energy and, er, time, but it is how the world works and a date and a time library has to deal with it.

NNM Time zones is implemented by Anders Gustafson. If you have any questions, ideas, errata, etc, please send me an email:

Version history

The version numbering uses the semver pattern <major>.<minor>.<patch>.

  • Version 1.6.5 was released 2023-12-31.
    • Upgraded Luxon from version 3.3.0 to 3.4.4.
    • Upgraded Bootstrap from version 5.3.0 to 5.3.2.
    • No bugs found.
  • Version 1.6.4 was released 2023-06-03.
    • Upgraded Luxon from version 2.3.1 to 3.3.0.
    • Upgraded Bootstrap from version 5.1.3 to 5.3.0.
    • Fixed problem with simulation values with zero seconds defined.
  • Version 1.6.3 was released 2022-03-28.
    • Added a couple of examples.
    • No bugs found.
  • Version 1.6.2 was released 2022-03-07.
    • Upgraded Luxon from version 2.2.0 to 2.3.1.
    • No bugs found.
  • Version 1.6.1 was released 2021-12-25.
    • Upgraded Luxon from version 2.0.2 to 2.2.0.
    • Upgraded Bootstrap from version 5.1.0 to 5.1.3.
    • No bugs found.
  • Version 1.6.0 was released 2021-09-05.
    • Added zoned datetime column.
    • Upgraded Luxon from version 2.0.1 to 2.0.2.
    • Upgraded Bootstrap from version 5.0.2 to 5.1.0.
    • No bugs found.
  • Version 1.5.3 was released 2021-07-14.
    • Upgraded Luxon from version 1.27.0 to 2.0.1.
    • Upgraded Bootstrap from version 5.0.1 to 5.0.2.
    • No bugs found.
  • Version 1.5.2 was released 2021-05-15.
    • Upgraded Luxon from version 1.25.0 to 1.27.0.
    • Upgraded Bootstrap from version 4.5.3 to 5.0.1.
    • No bugs found.
  • Version 1.5.1 was released 2021-01-06.
    • Better sorting of time zone identifiers in select lists.
  • Version 1.5.0 was released 2020-12-30.
    • Using the more correct and convenient datetime-local type for the Simulated current local datetime input field, for a better user experience.
    • No bugs found.
  • Version 1.4.0 was released 2020-12-28.
    • Different sorting of time zone identifiers in select lists.
    • No bugs found.
  • Version 1.3.1 was released 2020-10-30.
    • Upgraded Luxon from version 1.21.1 to 1.25.0.
    • Upgraded Bootstrap from version 4.3.1 to 4.5.3.
    • No bugs found.
  • Version 1.3.0 was released 2019-11-09.
    • Added support for GET parameters in URL.
    • Upgraded Luxon from version 1.21.0 to 1.21.1.
    • No bugs found.
  • Version 1.2.0 was released 2019-11-03.
    • Minor adjustments in the analyzing table for the values shown in the TZ identifier column and enhancing the rows for the current and the primary comparing time zones.
    • Modified the way that simulation mode is activated and the layout for the floating box.
    • Added a few more time zone identifiers.
    • Upgraded Luxon from version 1.19.3 to 1.21.0.
    • No bugs found.
  • Version 1.1.0 was released 2019-10-26.
    • For a better user experience, the convenience buttons used in simulation mode together with the simulation datetime value are now displayed in a floating box.
    • Layout adjustments.
    • Added a few more time zone identifiers.
    • Found bugs were removed.
  • Version 1.0.0 was released 2019-10-16.

References