2008-11-05 15 views
43

पर डेटटाइम पसंद करेंगे तो कुछ महीने पहले मुझे नए DateTimeOffset प्रकार से पेश किया गया था और समय क्षेत्र के संबंध में DateTime की त्रुटियों को लेकर खुशी हुई थी।जब आप डेटटाइम ऑफ डेटटाइम

हालांकि, मुझे आश्चर्य हुआ कि क्या इस नए प्रकार का उपयोग करने से कोई ओवरहेड या समस्याएं हो सकती हैं।

मैं एक बहु-लोकेल वेब एप्लिकेशन पर काम करता हूं। क्या किसी को कुछ भी पता है जो मुझे मेरी सभी तारीख/समय के काम के लिए इस्तेमाल करने से रोक सकता है? क्या यहां दुरुपयोग के लिए एक खिड़की है?

संदर्भ: DateTimeOffset: A New DateTime Structure in .NET 3.5 by Justin Van Patten

+0

संबंधित प्रश्न - http://stackoverflow.com/questions/2532729/daylight-saving-time-and-timezone-best-practices – Oded

+0

यह भी देखें [यह उत्तर] (http://stackoverflow.com/a/14268167) –

उत्तर

42

कभी-कभी आप वास्तव में सिर्फ एक "स्थानीय" (समय क्षेत्र अनजान) दिनांक और समय के बजाय समय में एक तत्काल का प्रतिनिधित्व करना चाहते हैं। ईमानदार होने के लिए यह केवल एक समय का प्रतिनिधित्व करने के लिए अक्सर उपयोगी होता है - उदा। "टाइमज़ोन पर ध्यान दिए बिना, मुझे 8 बजे उठो" - लेकिन तिथि और समय भी उपयोगी हो सकता है।

मैं मानता हूं कि अधिकांश मामलों के लिए, DateTimeOffset एक बेहतर फिट है। यह मुझे अजीब लगता है कि DateTimeTimeZone संरचना नहीं है जिसमें तत्काल और इसके टाइमज़ोन दोनों हैं ... ऑफ़सेट वास्तव में आपको आवश्यक सारी जानकारी नहीं देता है। (उदाहरण के लिए, DateTimeOffset दिया गया है, आपको नहीं पता कि 24 घंटे बाद का समय क्या होगा, क्योंकि आप नहीं जानते कि डीएसटी कब किक कर सकता है।)

यदि आप उस तरह की संरचना चाहते हैं, तो मेरे पास very crude implementation in another answer। मुझे यकीन है कि इसे बहुत आसानी से सुधार किया जा सकता है :)

+2

आप हमेशा यूटीसी में अपने समय का प्रतिनिधित्व कर सकते हैं और आवश्यकता होने पर एक विशिष्ट समय क्षेत्र में परिवर्तित कर सकते हैं ... –

+2

ओमर: लेकिन अक्सर आप टाइमज़ोन जानकारी को भी संरक्षित करना चाहते हैं, मुझे लगता है। हां, अक्सर आप केवल यूटीसी समय से दूर हो सकते हैं, लेकिन आवर्ती घटनाओं के लिए और जैसा कि आपको टाइमज़ोन भी पता होना चाहिए। –

+0

स्थानीय समय आमतौर पर केवल भविष्य की तिथियों के लिए उपयोग किया जाना चाहिए, जहां आप उन्हें टाइमज़ोन परिवर्तनों के साथ समायोजित करना चाहते हैं। ऐतिहासिक डेटा हमेशा एक सतत समय क्षेत्र में संग्रहीत किया जाना चाहिए, शायद यूटीसी हालांकि दूसरे के लिए ऐतिहासिक कारण हो सकते हैं। (उदाहरण: एनवाईएसई लेनदेन डेटा के लिए आप बोर्ड भर में ईएसटी चाहते हैं)। – Ben

3

ठीक है, एक स्पष्ट उत्तर तब होगा जब आपको एसपी के बिना ग्राहकों का समर्थन करने की आवश्यकता होगी (यह वास्तव में 3.5 में नहीं है - यह 2.0 एसपी 1 में है , जो एक ही समय में भेज दिया गया)।

+0

सच है, लेकिन मैं वास्तव में अपने कोड में और यूआई परत में आंतरिक रूप से बात कर रहा था। –

+2

पर्याप्त मेला। मैंने सोचा कि मैं इसका जिक्र करूँगा क्योंकि VS बहु-लक्ष्यीकरण यह स्पष्ट नहीं करता है जब आपने कथित रूप से 2.0 को लक्षित करते समय SP1 सुविधाओं का उपयोग किया है। कम से कम ऐसा करने के लिए अब एक FxCop (आदि) ऐड-इन है। –

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