Skip to main content

WinRT: No FindSystemTimeZoneId available.

The TimeZoneInfo class in the regular .NET Framework has the FindSystemTimeZoneId method. It allows you to specify a TimeZone id and return the related time zone information.
// Get Brussels Standard Time zone 
TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Romance Standard Time"); 
A list of Time Zone id’s can be found here: http://www.xiirus.net/articles/article-_net-convert-datetime-from-one-timezone-to-another-7e44y.aspx.

However if you try to execute this code in WinRT, you’ll notice that the FindSystemTimeZoneById method is not available.

The reason could be found in the same MSDN documentation:
“FindSystemTimeZoneById tries to match id to the subkey names of the HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones branch of the registry under Windows XP and Windows Vista. This branch does not necessarily contain a comprehensive list of time zone identifiers.”
 
I’m assuming that this registry key is not available from WinRT. So anyone who knows an alternative way to get this information?

The only solution I can think of is doing a call to the server and calculate the TimeZoneInfo there…