2009-06-08 13 views
10

मुझे यूटीसी समय को ईडीटी में बदलने के लिए एक सामान्य कार्य करने की आवश्यकता है। मेरे पास भारत में एक सर्वर है। इसमें एक आवेदन के लिए सभी समय उद्देश्यों के लिए ईडीटी समय का उपयोग करने की आवश्यकता है।टाइमज़ोन (यूटीसी से ईडीटी) के बीच समय कैसे परिवर्तित करें?

मैं .NET 3.5 का उपयोग कर रहा हूं।

मुझे यह किसी अन्य मंच पर मिला।

DateTime eastern = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(
     DateTime.UtcNow, "Eastern Standard Time"); 

जब मैंने "ईस्टेन डेलाइट टाइम" के साथ प्रयास किया तो मुझे एक त्रुटि मिली।

"समय क्षेत्र आईडी 'पूर्वी डेलाइट टाइम' स्थानीय कंप्यूटर पर नहीं मिला"।

कृपया इस या किसी अन्य समाधान के साथ सहायता करें।

उत्तर

22

पूर्वी डेलाइट टाइम "पूर्ण" समय क्षेत्र का नाम नहीं है - यह "आधे" समय क्षेत्र है, प्रभावी रूप से, हमेशा यूटीसी के पीछे 4 घंटे। (इसके लिए उचित शब्दावली हो सकती है, लेकिन मुझे इसके बारे में पता नहीं है।)

आप ईडीटी का उपयोग क्यों करना चाहते हैं जिनके लिए डेलाइट बचत लागू नहीं होती है? यदि आप एक कस्टम टाइम ज़ोन चाहते हैं जो हमेशा यूटीसी के समान ऑफ़सेट हो, तो TimeZoneInfo.CreateCustomTimeZone का उपयोग करें।

ध्यान दें कि यदि आप पूर्वी मानक टाइमज़ोन (TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")) प्राप्त करते हैं तो उसके पास अभी भी डेलाइट सेविंग टाइम उचित रूप से लागू होगा (यानी गर्मियों के दौरान)।

उदाहरण के लिए:

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); 

// Prints True 
Console.WriteLine(tzi.IsDaylightSavingTime(new DateTime(2009, 6, 1))); 
// Prints False 
Console.WriteLine(tzi.IsDaylightSavingTime(new DateTime(2009, 1, 1))); 
+0

हाय जॉन, आपके उत्तर के लिए धन्यवाद। इन 2 में से सर्वश्रेष्ठ समाधान के रूप में आप क्या सुझाव देंगे? क्या मैं एक कस्टम टाइमज़ोन बनाउंगा या TimeZoneInfo.FindSystemTimeZoneById ("पूर्वी मानक समय") का उपयोग करूंगा; यह मानते हुए कि यह डेलाइट सेविंग का ख्याल रखेगा। और मैं इस समस्या का ध्यान कैसे संग्रहीत प्रक्रियाओं में कर सकता हूं जो getdate() विधि का उपयोग कर रहे हैं और आईएसटी समय ले रहे हैं? – Shetty

+0

मुझे ईमानदार होने के लिए संग्रहीत प्रक्रियाओं के बारे में पता नहीं है - यदि संभव हो, तो यूटीसी को पास करें और उन्हें यूटीसी समझें। इस बात के लिए कि क्या आपको पूर्वी मानक समय के कस्टम समय क्षेत्र का उपयोग करना चाहिए, यह इस बात पर निर्भर करता है कि आप समय क्षेत्र चाहते हैं जो * हमेशा * यूटीसी के पीछे 4 घंटे है, या जो पूर्वी मानक समय से मेल खाता है। आपने मूल रूप से कहा था कि आपको "सभी समय उद्देश्यों के लिए" ईडीटी का उपयोग करने की आवश्यकता है - मेरा सुझाव है कि आप यह जांच लें कि आपको वास्तव में * ईडीटी की आवश्यकता है या आप पूर्वी मानक समय की आवश्यकता है या नहीं। –

+0

ओके जॉन। मुझे * बोस्टन * शहर का समय सभी समय के प्रयोजनों के लिए मानक समय के रूप में उपयोग करने के लिए कहा गया था, जो ईडीटी के अंतर्गत आता है। मुझे दिन की रोशनी की बचत के बारे में ज्यादा जानकारी नहीं थी। मैं चाहता था कि मेरा आवेदन इस बार ले जाए, हालांकि यह आईएसटी सर्वर में चल रहा है। पहले यह एक अलग सर्वर में था जो ईडीटी समय क्षेत्र में चल रहा था और मेरे पास ऐसा कोई समस्या नहीं थी। – Shetty

1

मैंने कहा है कि आप, समय अवधि की गणना के लिए यूटीसी उपयोग करें ताकि आप डेलाइट बचत समय की समस्याओं से बचने और उसके बाद ही प्रदर्शन के लिए LOCALTIME उपयोग करना चाहिए।

डेटटाइम। यूटीसी के लिए लोकल टाइम जो स्थानीय समय क्षेत्र है और फिर डेटटाइम। स्थानीय समय से यूटीसी में कनवर्ट करने के लिए दिनांक समय।

के बाद टिप्पणी 1

संपादित मैं यह तो है कि आप सर्वर की है कि एक अलग समय क्षेत्र दिखाने के बाद कर रहे हैं ले रहे हैं?

यदि आप अपने सर्वर तक पहुंचने के लिए वेब पेज का उपयोग कर रहे हैं तो HttpRequest.UserLanguages ​​का उपयोग करें CultureInfo ऑब्जेक्ट बनाने में मदद करने के लिए और अपनी डेटटाइम ऑब्जेक्ट को पार्स करने के लिए इसका उपयोग करें। पूरी जानकारी के लिए यहाँ देखो: Microsoft link on displaying local user time for web pages.

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

किसी भी तरह से आपके सर्वर को यह जानने की आवश्यकता नहीं है कि क्लाइंट ऐसा कहां है यदि आपके पास एकाधिक टाइमज़ोन में एकाधिक क्लाइंट हैं तो सभी गणनाएं मिलेंगी। यह आपको विभिन्न संस्कृति वस्तुओं के उपयोग से इच्छित किसी भी समय क्षेत्र में समय दिखाने की अनुमति देगा।

संपादित 2 मेरी दूसरी टिप्पणी

की नकल की आप सर्वर से UTC स्वरूप में समय डेटा प्राप्त कर सकते हैं। फिर आप डेटटाइम का उपयोग कर इसे परिवर्तित कर सकते हैं।ToLocalTime या DateTime.ToUniversalTime requried के रूप में। यदि आप तिथियों को भी शामिल कर रहे हैं और यूएस एमएम/डीडी/वाईय और यूरोपीय डीडी/एमएम/वाईई प्रारूपों के साथ सामना करने की आवश्यकता है, तो आप डेटइम मूल्य का विश्लेषण करने के लिए संस्कृतिइन्फो क्लास का उपयोग कर सकते हैं। यह आपके पास इस समय की तुलना में अधिक काम की तरह लगता है, लेकिन इसका मतलब यह होगा कि यदि आप अपने सर्वर को फिर से ले जाते हैं तो आपको डेटटाइम हैंडलिंग को फिर से लोड करने की आवश्यकता नहीं है।

एक नया बिंदु

एक और मुद्दा को देखने के लिए सर्वर और ग्राहकों एनटीपी (नेटवर्क टाइम प्रोटोकॉल) या SNTP (सरल नेटवर्क टाइम प्रोटोकॉल) का उपयोग करते हुए अगर यह काफी सटीक है के बीच घड़ी तुल्यकालन है। मुझे नहीं पता कि आप किस ओएस का उपयोग कर रहे हैं लेकिन इसका उपयोग नेटवर्क सर्वर सिंक्रनाइज़ करने के लिए विंडोज सर्वर टाइम सेवाओं द्वारा किया जाता है।

+0

हाय क्रिस, आपके उत्तर के लिए धन्यवाद। यदि मैं गलत नहीं हूं, तो सर्वर आईएसटी समय क्षेत्र में चल रहा है, डेटाटाइम। यूटीसी से लॉयलआउट समय आईएसटी में समय देगा। – Shetty

+0

सच है। मैंने अपना जवाब संपादित कर लिया है। यह समझाने के लिए कि कैसे स्थानीय समय क्लाइंट-सर्वर कोड और वेब उपयोगकर्ताओं के लिए स्थानीय समय प्रदर्शित करने के लिए पॉइंटर्स wrt। – ChrisBD

+0

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

0

काउबॉय विधि यूटीसी समय लेना है, इसे चार घंटे के लायक सेकंड (टाइमज़ोन ऑफ़सेट) घटाएं, इसे यूटीसी स्वरूपण फ़ंक्शन का उपयोग करके प्रारूपित करें, और उस पर "ईडीटी" लेबल थप्पड़ मार दें।

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

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

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