गायब हो रहा है मैं कुछ पुराने एमएफसी कोड में कॉल करने के लिए COM का उपयोग करने वाली हमारी पुरानी विधि को बदलने के लिए .net4 में TimeZoneInfo.GetSystemTimeZones का उपयोग करने का प्रयास कर रहा हूं। हालांकि, मुझे COM विधि पर वापस जाना पड़ा क्योंकि GetSystemTimeZones सभी समय क्षेत्रों को वापस नहीं करता है। यूके में आधारित होने और विकल्पों की हमारी सूची में जीएमटी मानक समय सहित एक समस्या नहीं है।GetSystemTimeZones जीएमटी मानक समय
जब मैं रजिस्ट्री में लग रहे हैं, मुझे लगता है कि जीएमटी मानक समय परिभाषित कोई नियम नहीं के साथ एक गतिशील डीएसटी उपकुंजी है। मैंने .NET4 स्रोत कोड डाउनलोड किया है और, TimeZoneInfo.cs में, GetSystemTimeZones अंततः TryCreateAdjustmentRules को कॉल करता है जो डायनामिक डीएसटी कुंजी में कोई फर्स्ट एंटर्री या LastEntry परिभाषित नहीं है, तो झूठी वापसी दिखाई देता है।
//
// loop over all of the "<time_zone_name>\Dynamic DST" hive entries
//
// read FirstEntry {MinValue - (year1, 12, 31)}
// read MiddleEntry {(yearN, 1, 1) - (yearN, 12, 31)}
// read LastEntry {(yearN, 1, 1) - MaxValue }
// read the FirstEntry and LastEntry key values (ex: "1980", "2038")
Int32 first = (Int32)dynamicKey.GetValue(c_firstEntryValue, -1, RegistryValueOptions.None);
Int32 last = (Int32)dynamicKey.GetValue(c_lastEntryValue, -1, RegistryValueOptions.None);
if (first == -1 || last == -1 || first > last) {
rules = null;
return false;
}
TryCreateAdjustmentRules झूठे रिटर्न के रूप में, TryGetTimeZoneByRegistryKey एक InvalidTimeZoneException जो जीएमटी मानक समय समय क्षेत्र संग्रह में से नहीं जोड़ा गया है इसका मतलब है फेंकता है। मैंने खाली डायनामिक डीएसटी उपकुंजी को हटाने का प्रयास किया है, लेकिन कुछ उन्हें फिर से जोड़ता है (शायद विंडोज अपडेट)।
मैंने बहुत सी खोज की है लेकिन किसी और ने इस समस्या की रिपोर्ट नहीं की है। मुझे यकीन नहीं है कि GetSystemTimeZones ठीक है या नहीं, मैं खाली स्थान डायनामिक डीएसटी उपकुंजी को पहले स्थान पर दिखाना बंद कर सकता हूं या नहीं। कोई विचार?
यह बेहद अजीब बात है - "जीएमटी मानक समय" निश्चित रूप से मेरे लिए वापस आ गया है। क्या आप यह निर्धारित करने के लिए उपयोग कर रहे कोड को पोस्ट कर सकते हैं कि यह गुम है? यह शायद ठीक है, लेकिन जैसा कि हम अजीब परिणाम देख रहे हैं ... –
मुझे यह कहने से नफरत है लेकिन यह मेरे सिस्टम पर काम करता है, मैं ब्रिटेन में हूं और मुझे लौटाए गए 101 मूल्यों में 'जीएमटी मानक समय' दिखाई देता है। क्या आपने इसे किसी अन्य सिस्टम पर आजमाया है? – Lazarus
जॉन, क्या आपकी जीएमटी मानक समय रजिस्ट्री कुंजी में एक खाली गतिशील डीएसटी उपकुंजी है? –