2011-09-21 10 views
7

मैंने इस सरल कंसोल ऐप को परीक्षण करने के लिए लिखा है जब हम विंडोज़ 7 पर मैन्युअल रूप से टाइमज़ोन को सेट डेट टाइम विंडो का उपयोग करके बदलते हैं, चाहे टाइमचेंज इवेंट ट्रिगर हो या नहीं? इस सवाल का जवाब हां में यह शुरू हो रहा है, लेकिन मैं वर्तमान समय जो ठीक से नहीं दिखा रहा है मुद्रण कर रहा हूँ ..SystemEvent.TimeChange एक ही समय दिखा रहा है, टाइमज़ोन बदलता है

static void Main(string[] args) 
    { 
     SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged); 
     Console.Read(); 
    } 

    static void SystemEvents_TimeChanged(object sender, EventArgs e) 
    { 
     Console.WriteLine(DateTime.Now); 
    } 

एक बार जब आप कंसोल अनुप्रयोग चलाने के लिए और फिर समय क्षेत्र यह हमेशा एक समय परिवर्तन को दर्शाता बदलने की कोशिश, लेकिन फिर यह किसी भी तरह के लिए अटक उस समय भी यदि आप टाइमज़ोन को अलग-अलग टाइमज़ोन या उसी में बदलते हैं।

क्या मुझे कुछ याद आ रही है?

यह सत्यापित करने के लिए कि सिस्टम का समय बदल गया है या नहीं, मैंने कमांड प्रॉम्प्ट खोला है और वर्तमान समय को मुद्रित करने के लिए दिनांक और 'समय' कमांड का उपयोग किया है जो टाइमज़ोन के अनुसार सही दिखाता है।

उत्तर

9

मुझे विश्वास है कि सिस्टम समय क्षेत्र कैश किया जा रहा है।

TimeZoneInfo.ClearCachedData(); 

रखें कि सिर्फ अपने DateTime.Now कॉल करने से पहले, और ऐसा लगता है कि यह ठीक काम करता है: आप इस कैश हालांकि साफ कर सकते हैं। (मेरी मशीन, वैसे भी :)

संपादित करें पर काम करता है: जैसा कि टिप्पणी में बताया गया है, ऐसा लगता है कि कुछ मामलों में आप भी CultureInfo.CurrentCulture.ClearCachedData() कॉल करने के लिए की जरूरत है। मैंने नहीं किया, लेकिन मैं कहना है कि यह तो :)

+0

धन्यवाद जॉन। मुझे कैश के बारे में भी यही मिला। हल किया। – user393014

+1

संस्कृतिInfo.CurrentCulture.ClearCachedData() को भी मत भूलना; TimeZoneInfo.ClearCacheData() से पहले; – user393014

+0

@ user393014: हम्म ... मुझे ऐसा करने की आवश्यकता नहीं थी। क्या होता है यदि आप अपनी मशीन पर ऐसा नहीं करते हैं? –

0

बेवकूफ सवाल करने के लिए चोट नहीं करता है या सिर्फ समय क्षेत्र की हिम्मत है, लेकिन आप समय बदल रहे हैं,? 5:00 5:00 है, तथ्य यह है कि आपने टाइमज़ोन बदल दिया है (और विस्तार से 'कंप्यूटर को एक या दो घंटे आगे या पीछे ले जाया जाता है) इस तथ्य को नहीं बदलेगा कि सिस्टम घड़ी 5:00 पर सेट है।

+0

'डेटटाइम.अब' दिखाता है * स्थानीय * समय, जो समय क्षेत्र बदलते समय * करता है * बदलता है। (सिस्टम मानता है कि घड़ी में सही यूटीसी मूल्य है।) –

संबंधित मुद्दे