我一直在尋找高和低,無法找到答案。 TZI如何不同?FindSystemTimeZoneById.UTC與GetSystemTimeZones UTC不同嗎?
我已經做了一些MSDN挖掘,看到了這個: http://msdn.microsoft.com/en-us/library/system.timezoneinfo.findsystemtimezonebyid.aspx
其中明確規定:
FindSystemTimeZoneById嘗試匹配ID到HKEY_LOCAL_MACHINE \的子項名稱Software \ Microsoft \ Windows NT \ CurrentVersion \ Time Zones在Windows XP和Windows Vista下的註冊表分支。該分支不一定包含全面的時區標識符列表。
因此,我認爲這意味着它每次都要註冊表?
但隨後這個混淆的問題: http://msdn.microsoft.com/en-us/library/system.timezoneinfo.utc.aspx
,並說:
這是一個內置的對象;有關此TimeZoneInfo對象的信息不會從註冊表中檢索。
因此,看起來我打電話給FindSystemTimeZoneById()
實際上是短路並返回TimeZoneInfo.UTC,並且根本不會進入註冊表!這不是想法,因爲我想要另一個版本的DisplayName。是什麼賦予了???
是的,我在原始問題中猜測的很多。我想我想知道的是爲什麼他們建立了這條捷徑?爲什麼不嘗試從系統註冊表獲取UTC,如果它不存在,那麼使用自定義時區? – Eric
顯然,如果必須訪問註冊表,一個非常常用的通過方法優化的路徑並不是最優化的。您可以在connect.microsoft.com上提交錯誤。它確實需要制定一個合法的案例,您無法找到解決方法。堅強,祝你好運。 –
對於踢我反彙編源,他們實際上不需要每次都打到註冊表,因爲他們不會每次都創建自定義時區。他們將結果保存到成員變量中。他們可以做到這一點.m_cachedUtc = GetUtcFromRegisty()? GetUtcFromCustom();無論如何,我能夠解決這個問題。感謝您花時間看看這個! – Eric