दुर्भाग्य से, "वर्तमान" समय क्षेत्र के किसी भी अवधारणा मशीन के ऑपरेटिंग सिस्टम सेटिंग्स से जुड़ा हुआ है कि कोड चल रहा है। समय क्षेत्र बदलने के लिए कुछ Win32 एपिस हैं, लेकिन मैं उनका उपयोग करने की अनुशंसा नहीं करता हूं। न केवल वे "थ्रेड-सुरक्षित" हैं, लेकिन वे "प्रक्रिया-सुरक्षित" नहीं हैं। समय क्षेत्र सेटिंग मशीन पर चल रही सब कुछ को प्रभावित करती है।
उस ने कहा, मैं उत्सुक हूं कि आपका उपयोग केस वास्तव में क्या है। यदि आप प्रति थ्रेड टाइमज़ोन सेट करने की स्थिति में हैं, तो संभवतः आप स्थानीय सेटिंग पर भरोसा न करने की स्थिति में हैं। आप इसके बजाय TimeZoneInfo
पर रूपांतरण विधियों का उपयोग कर सकते हैं।
उदाहरण के लिए, कहें कि आप किसी अन्य समय क्षेत्र में वर्तमान समय की तलाश में थे। आप ऐसा करने की क्षमता की तलाश में हो सकता है:
using (TimeZone.CurrentTimeZone = ... )
{
var now = DateTime.Now;
}
लेकिन बजाय आप बस यूटीसी जहां उपयुक्त से परिवर्तित करना चाहिए:
var now = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(
DateTime.UtcNow, "some other timezone id");
स्रोत
2013-03-28 14:22:11
हम नेट साइट के लिए एक वांछित सुविधाओं, हम कर रहे हैं नहीं कर रहे हैं ठोस प्रश्न साइट के ठोस जवाब। टाइमज़ोन हैंडलिंग सबसे अच्छा समय पर गैर-तुच्छ है, एक टाइमज़ोन प्रति-थ्रेड की जटिलता की परत जोड़ना सिर्फ – Petesh
@ पेतेश के लिए पूछ रहा है, वास्तव में पूछने का मतलब नहीं था कि वास्तव में क्यों। मैं सोच रहा था कि क्या यह किसी भी तरह से संभव है। –
टाइमज़ोन के लिए थ्रेड-लोकल ऑब्जेक्ट बनाने से आपको कुछ भी रोक नहीं है, यह सिर्फ इतना है कि आपके कोड को छोड़कर कुछ भी इसका उपयोग नहीं करेगा। आपको इसे लागू करने के लिए एक छोटे से तरीके के लिए .NET में ['थ्रेडलोकल 'कक्षा] (http://msdn.microsoft.com/en-us/library/dd642243.aspx) देखना चाहिए। –
Petesh