6

Not sure if superuser.com is the proper StackExchange site to ask this question; if not, refer me to the most appropriate of the sites.

What is the origin of the time zones that come with Windows? For the sake of example, I shall list some here (from using PowerShell, but the info is not .NET-specific):

PS C:\Users> [TimeZoneInfo]::FindSystemTimeZoneById("W. Europe Standard Time")

Id                         : W. Europe Standard Time
HasIanaId                  : False
DisplayName                : (UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
StandardName               : W. Europe Standard Time
DaylightName               : W. Europe Daylight Time
BaseUtcOffset              : 01:00:00
SupportsDaylightSavingTime : True


PS C:\Users> [TimeZoneInfo]::FindSystemTimeZoneById("Central Europe Standard Time")

Id                         : Central Europe Standard Time
HasIanaId                  : False
DisplayName                : (UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague
StandardName               : Central Europe Standard Time
DaylightName               : Central Europe Daylight Time
BaseUtcOffset              : 01:00:00
SupportsDaylightSavingTime : True


PS C:\Users> [TimeZoneInfo]::FindSystemTimeZoneById("Romance Standard Time")

Id                         : Romance Standard Time
HasIanaId                  : False
DisplayName                : (UTC+01:00) Brussels, Copenhagen, Madrid, Paris
StandardName               : Romance Standard Time
DaylightName               : Romance Daylight Time
BaseUtcOffset              : 01:00:00
SupportsDaylightSavingTime : True


PS C:\Users> [TimeZoneInfo]::FindSystemTimeZoneById("Central European Standard Time")

Id                         : Central European Standard Time
HasIanaId                  : False
DisplayName                : (UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb
StandardName               : Central European Standard Time
DaylightName               : Central European Daylight Time
BaseUtcOffset              : 01:00:00
SupportsDaylightSavingTime : True

All these four entries ("W. Europe Standard Time", "Central Europe Standard Time", "Romance Standard Time", "Central European Standard Time") are essentially equivalent, but confusing in several ways. Here are some examples:

  • The name W. Europe Standard Time is often used for UTC±00:00 used in Lisbon, London etc., so where does the name come from?
  • The word Romance in the third one is curious. One city mentioned (Copenhagen) uses a non-Romance language (Danish, a Germanic language), while a city with clearly Romance association (Rome, from the name of which Romance is derived) is in another entry.
  • There is no meaning to the groups. Like why are Amsterdam and Brussels in different groups? And why does Stockholm go together with Amsterdam while Copenhagen goes with Brussels?
  • If you are in Oslo (not mentioned), would you pick Copenhagen or Stockholm?
  • The names Central Europe Standard Time and Central European Standard Time are very similar? Why is Zagreb not grouped together with Ljubljana; the cities of the Balkans are completely randomly distributed between the two groups?

So my main question is, what is the explanation for these groups? Is there a map from tz database entries to the groups used by Windows?

dropdown from Settings

4
  • 1
    Ah, I just discovered that on .NET 6, under Windows, you can use an IANA/tz database name with FindSystemTimeZoneById. So that gives a map, and I can reveal that [System.TimeZoneInfo]::FindSystemTimeZoneById("Europe/Oslo").DisplayName gives "(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna". My question about where the Windows entries come from still stands. Commented Mar 10, 2022 at 16:03
  • One reason for apparent duplicates (i.e., with same offset from Zulu) is that political entities have many different rules for applying "Daylight Savings Time" and for splitting time zones. One odd example: In the USA, the state of Arizona does not observe DST, but the Navajo Native American reservations within that state do observe DST, while the Hopi reservation does not. en.wikipedia.org/wiki/… Commented Mar 10, 2022 at 23:29
  • @DrMoishePippik, I know about that. And you can find zones in Africa with UTC+01:00 which do not have DST (called Summer Time in Europe), and I did not include them. The zones I included have the same DST rule. Historical differences are not supported by Windows, by the way, are they? In IANA/tz database, there are many more zones. But the groups in Windows seem very strange, and their names are silly. Romance time? Who names a time zone like that? Note that Lisbon has a Romance language and is one hour behind, and Bucharest has another Romance language and is one hour ahead. Commented Mar 10, 2022 at 23:48
  • Ummm... perhaps it's a bit more romantic to start early? Or late? Another idiosyncrasy is that some states group disparate regions into a single time zone, or have 1/2 hour zones. My guess is that Windows names were created at Microsoft for internal use. Commented Mar 10, 2022 at 23:52

4 Answers 4

3

All these four entries ("W. Europe Standard Time", "Central Europe Standard Time", "Romance Standard Time", "Central European Standard Time") are essentially equivalent, but confusing in several ways.

Yes.

The name W. Europe Standard Time is often used for UTC±00:00 used in Lisbon, London etc.

Colloquially, yes - "Western European Time" is applied to several places that are UTC+0. However, Windows thinks that's UTC+1. The Windows time zone ID for London and Lisbon is "GMT Standard Time".

so where does the name come from?

It's a mistake, that has been grandfathered in to the data.

The word Romance in the third one is curious. One city mentioned (Copenhagen) uses a non-Romance language (Danish, a Germanic language), while a city with clearly Romance association (Rome, from the name of which Romance is derived) is in another entry.

I think this is a stretch. It's more likely the individual who first proposed this zone entry thought that Paris was a romantic place. (Yes, I am being serious.)

There is no meaning to the groups. Like why are Amsterdam and Brussels in different groups? And why does Stockholm go together with Amsterdam while Copenhagen goes with Brussels?

No reason other than there were a long list of European countries and corresponding cities with the same time zone at the time the identifiers were chosen. I speculate they were broken into four to keep the drop-down list visible in the UI without making it super wide, or upsetting anyone by dropping one of them.

If you are in Oslo (not mentioned), would you pick Copenhagen or Stockholm?

I can't speak for what one would do, but the correct mapping would be Stockholm. (W. Europe Standard Time)

The names Central Europe Standard Time and Central European Standard Time are very similar? Why is Zagreb not grouped together with Ljubljana; the cities of the Balkans are completely randomly distributed between the two groups?

Yes.

So my main question is, what is the explanation for these groups?

I've researched this considerably, and the only reasonable answer I can offer is: Human behavior can often be seen as haphazard when reviewed over time. Hence the expression, "Hindsight is 20/20".

  • Consider that the first APIs that used this data were part of the earliest versions of Windows NT. While the tz database project existed at the time, it wasn't as ubiquitous as it is today. Microsoft also did not have a culture of adopting open source technologies, or much interest on interoperability between systems with things as esoteric as time zones.

  • It took much longer for there to be even a slight regard for historical time zone changes (Windows Vista added "Dynamic DST" to the registry entries).

  • Generally speaking, the only motivation was having the clock on the taskbar be correct, for the time zones that Microsoft was selling Windows in. Thus, the list did not have to cover 100% of the world - but just the areas where there was a support contract. If you were using Windows in some other time zone, you probably didn't have a channel to convince someone at Microsoft that it was an important issue worth spending engineering money on.

  • Microsoft also had had major problems with time zones interfering with product sales due to how they were labeled on maps. (See this blog or this older tz list post for more details.)

  • Over time, more and more time zones were added to the list. Sometimes the changes were at request of customers, and sometimes they were in response to government change of standard offset or DST rules. Sometimes the changes were part of larger projects, or sometimes as one-offs. Often by different teams following what they thought was the right thing to do, but didn't necessarily align with precedent (ex: the "Russia Time Zone X" numbered zones).

The good news is, the world changed, and Microsoft has come a long way with it. Technologies like .NET have embraced IANA time zones where possible. So has Windows itself, in several areas such as WinRT/UWP. In 2016, I worked at Microsoft and helped the Windows team fill in the gaps. Now, as much as possible, there is a reasonably valid choice of time zone for any person on the planet (to align with Microsoft's revised mission statement: "to empower every person and every organization on the planet to achieve more"). There's a lovely piece in Wired magazine about these folks. I no longer work there, but the policies I helped put in place continue to support efforts to stay updated as time moves on. You can follow along with their work on the Microsoft DST/TZ blog.

Is there a map from tz database entries to the groups used by Windows?

Yes. The de-facto standard mapping is the windowsZones.xml file, found within the Unicode CLDR project. It is used by Windows itself, as well as .NET, many third-party libraries, and just about anything that runs ICU.

In .NET 6+, running on either non-Windows systems, or on modern Windows systems that include ICU, you can just use the IANA identifiers and leave the legacy conversion out of your programs. There is also my TimeZoneConverter library, which can do much of the same thing regardless of .NET version or OS.

1

Explanations may be found in the Microsoft article Introducing New Windows Time Zones from 2019:

  1. Criteria for Creating New Time Zones in Windows

A new Windows time zone entry will be created when a country/region (including dependencies), or a first-order administrative division of a country/region (state, province, department, etc.), has a separate and distinct history of UTC offsets and DST rules from existing time zone entries. Additionally, a smaller geographic area (county, city, etc.) qualifies for a new Windows time zone entry when its current UTC offset and DST rule combination is not provided by another Windows time zone entry.

  1. New Time Zones

The following time zones have been added, either because they are currently unrepresented, or because they have a unique history of changes in recent years.

The answer is then historical in nature - when countries change their rules, Microsoft may create new groups that include them, or move them to another group. Rules may include summer-time dates or anything that could have changed the times that Windows needed to set for that country.

Microsoft doesn't seem to be unifying groups when the rules change, preferring to keep previous groups, even if the entries in multiple groups use today the same time-zone.

4
  • At what point in history did Brussels, Copenhagen, Madrid, Paris share a "Romance" time convention while Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna had a different convention called "W. Europe"? It has never occurred. Not in the lifetime of Microsoft, and not before Microsoft. Commented Apr 2, 2022 at 14:10
  • Nevertheless, this is how Microsoft explains its groups. It may perhaps relate to past decisions on daylight saving time, where different countries took different decisions on the exact date of the change, before the European union. The names of the groups are whatever the Microsoft engineers felt like calling. Any difference would force Microsoft to create a new group.
    – harrymc
    Commented Apr 2, 2022 at 18:04
  • It makes no sense. The E.U. made rules about "summer time" in 1981. But both groups contain cities that were inside the E.U. at that time, and both groups contain cities that were not (yet) inside the E.U. at that time (however, likely chose to follow the E.U. rules for summer time anyway). You are not going to find any point in history where those groups were reasonable. Commented Apr 3, 2022 at 18:19
  • The EU only synchronized its Daylight Saving Time schedule in 1980. Until then, it was every country to itself. As I said above, when new comers synchronized their DST with the EU, Microsoft could choose to add them to existing groups. I don't know, and can't know, why Microsoft decided what it did, but Microsoft itself said in my link that geo-history played a major role in such decisions. Microsoft doesn't seem to like abolishing established groups, nor does it seem attempting to unify existing groups into larger ones, perhaps for technical reasons.
    – harrymc
    Commented Apr 3, 2022 at 19:22
1

I believe Romance is a reference to a linguistic group that is applied to a typical geographical region/jurisdiction. (Like "Suisse Romande" that is the term applied to designate the group of French-speaking cantons in Switzerland.) Romance language is a language directly derived from Latin, see https://en.wikipedia.org/wiki/Romance_languages. Oddly enough, the details of the given time zones do not match, or match partially. I suppose it started with particular jurisdictions when that tag made sense, and then it drifted from the original composition as DST rules changed - e.g. Denmark / Danish would hardly quality as a Latin-language speaking country.

1
  • I know the word Romance well already. But it has nothing to do with time zones? I already wrote in comment to my question: Note that Lisbon has a Romance language and is one hour behind, and Bucharest has another Romance language and is one hour ahead. In the question itself, I wrote: One city mentioned (Copenhagen) uses a non-Romance language (Danish, a Germanic language), while a city with clearly Romance association (Rome, from the name of which Romance is derived) is in another entry. Commented Apr 3, 2022 at 18:15
0

There was an article in the Microsoft knowledge-base about this that I have read about 10 years ago.
I did some digging but I was not able to find that article again.

From what I remember:

Amsterdam and Brussels may be effectively the same time-zone now, but they were NOT in the past.
In order to make date-time calculations, that go back in time to those days, work correctly it is required to maintain these separate time-zones even though, today, they are functionality equivalent.

(I presume the same thing applies to the other time-zones.)

As for the odd names and weird zones: These are also historic and are kept around for compatibility reasons.

2
  • Would be interesting to see that article. I know about some historical differences. If you go back to way way before Microsoft's era, the cities "Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna" did not share time conventions, and were not in any separate political alliance or anything. So I do not understand where this group comes from. Since 1981, the EU has coordinated things like summer time. Cities like Bern are outside the EU but likely followed EU conventions. Cities like Stockholm and Vienna entered the EU much later (however also likely followed EU on time policies in the 80s). Commented Mar 31, 2022 at 9:11
  • But is "Romance time" etc. pure Microsoft inventions? Or did they take up these groupings from some external source? Commented Mar 31, 2022 at 9:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .