Why does MS Windows (specifically server 2008 here) consider Italy to be in W. European Time when (I think) it should be in Central European Time according to every other source I can find?
TZUtil /g gives:
W. Europe Standard Time
The control panel shows:
(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
Every other source I find online such as:
claim that Italy is Central European Time/Central European Summer Time. (CET/CEST).
The Olson name that works in Java to give the correct time is "Europe/Rome", which agrees with the control panel, but Olson considers Europe/Rome to be CET, not WET.
Who is correct?
My specific problem is that I'm trying to convert the output from a strftime call on the Windows/C++ server side, to a java GregorianCalendar (with the correct timezone/DST). SimpleDateFormat.parse's understanding of timezones do not include MS's time zone ids, (and sadly doesn't understand the correct TimeZone id either, as per this discussion: http://mail.openjdk.java.net/pipermail/core-libs-dev/2015-March/032050.html).
So i have to convert something like "W. Europe Standard Time" into "CET", which SimpleDateFormat can parse. I know that the CLDR provides the mapping from MS names to Olson names, but I also need the MS names to abbreviations.
Best How To :
Do not read anything into the identifiers chosen for Windows time zones. "W. Europe Standard Time" does not mean anything in particular, other than it's the ID for this specific time zone entry.
It is indeed more accurate to state that Italy uses Central European Time, or Central European Summer Time (depending on whether DST is in effect or not). However, there's nothing aligning the "W. Europe Standard Time" identifier with the "WET" abbreviation
There are many other examples, some of which are listed in the timezone tag wiki (in the section on Time Zone Databases).
Also, some might consider this question a better fit for superuser.com or serverfault.com, unless your question was with specific regard to using it with programming, such as via .NET's
TimeZoneInfo class. You may wish to edit your question to clarify the intended usage.
Related - Consider that CLDR indeed maps
"W. Europe Standard Time", and that you can use my TimeZoneNames library in .NET to get the appropriate names and abbreviations from either zone.
var names = TimeZoneNames.GetNamesForTimeZone("W. Europe Standard Time", "en");
names.Generic == "Central European Time"
names.Standard == "Central European Standard Time"
names.Daylight == "Central European Summer Time"
var abbreviations = TimeZoneNames.GetAbbreviationsForTimeZone("W. Europe Standard Time", "en");
abbreviations.Generic == "CET"
abbreviations.Standard == "CET"
abbreviations.Daylight == "CEST"