[ध्यान दें: यह जवाब मान लिया गया कंप्यूटर कोड चल रहा GMT समय क्षेत्र में है]
यह क्योंकि "डब्ल्यू यूरोप मानक समय" है नेट के अनुसार यूटीसी के रूप में ही समय क्षेत्र (नहीं है भले ही यह होना चाहिए)। यह बहुत अजीब है, और नेट पुस्तकालयों में एक बग की तरह लगता है।
इसके कारण, आपने अनजाने में इसे यूटीसी में एक समय बदलने के लिए कहा है और इसे यूटीसी (यानी जीएमटी समय) पारित किया है, लेकिन फिर यह बताया कि समय "डब्ल्यू यूरोप मानक समय" में है, जो कि है यूटीसी से एक घंटा आगे।
तो स्वाभाविक रूप से, परिणामस्वरूप समय एक घंटे में अलग होता है। कदम से
कदम:
var now = new DateTime(DateTime.Now.Ticks, DateTimeKind.Unspecified);
यह यूटीसी में समय-now
सेट।
var convertedTime = TimeZoneInfo.ConvertTimeToUtc(now, TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard time")
यह UTC से now
बदल देता है, यह सोचते हैं कि now
"डब्ल्यू यूरोप मानक समय" में है, यानि कि यूटीसी +1। लेकिन यह नहीं है! इसलिए परिणाम गलत है।
ध्यान दें कि "W. Europe Standard time"
यूटीसी होना चाहिए, लेकिन यह किसी कारण के लिए नहीं है [नीचे टिप्पणी के जवाब में संपादित करें]। और जब आप ऐसा करते हैं:
TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard time")
यह (स्पष्ट रूप से) सही यूटीसी के बजाय यूटीसी + 1 देता है। यह नाम को "W. Europe Daylight Time"
में भी बदल देता है। ऐसा लगता है कि यह एक उत्सुक बग हो सकता है?
[दूसरा संपादित करें]
चेक बाहर Microsoft Time Zone Index Values (and also here)। (नोट न तो उन लिंक्स के विंडोज 7 के लिए वास्तव में कर रहे हैं, लेकिन वे एक ही परिभाषाओं होते हैं।)
यह "डब्ल्यू यूरोप मानक समय" जो निश्चित रूप से कहा गया है (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
'डब्ल्यू। यूरोप मानक 'टाइमज़ोन' यूटीसी + 01.00' नहीं है? –
आपको वास्तव में @ जोनस्केट द्वारा नोडाटाइम http://noda-time.blogspot.com/ को आजमाएं। इसे .NET में एक नई डेटटाइम एपीआई के रूप में शामिल किया जाना चाहिए। –
@ सोनर गोनुल: नहीं, यह नहीं है। जब यह डेलाइट बचत समय नहीं है। –