DateTime
ऑब्जेक्ट से जुड़ा कोई अंतर्निहित टाइमज़ोन नहीं है। आप उस पर ToUniversalTime()
चलाते हैं, तो यह है कि कोड में चल रहा है संदर्भ से-क्षेत्र का उपयोग।
उदाहरण के लिए, अगर मैं 1970/01/01 के युग से एक DateTime
बनाते हैं, तो यह मुझे एक ही DateTime
वस्तु देता है कोई फर्क नहीं पड़ता कि दुनिया में मैं कहाँ हूँ।
यदि मैं ग्रीनविच में कोड चला रहा हूं तो ToUniversalTime()
चलाता हूं, तो मुझे एक ही समय मिलता है। यदि मैं वैंकूवर में रहते हुए करता हूं, तो मुझे -8 घंटे की ऑफसेट DateTime
ऑब्जेक्ट मिलता है।
यही कारण है कि आपको किसी भी प्रकार के दिनांक रूपांतरण या स्थानीयकरण की आवश्यकता होने पर यूटीसी समय के रूप में अपने डेटाबेस में समय से संबंधित जानकारी स्टोर करना महत्वपूर्ण है। इस बात पर विचार करें कि क्या आपका कोडबेस किसी अन्य टाइमज़ोन में सर्वर सुविधा में स्थानांतरित हो गया है;)
संपादित करें: जोएल के उत्तर से नोट - DateTime
डिफ़ॉल्ट रूप से ऑब्जेक्ट्स DateTimeKind.Local
के रूप में टाइप किए गए हैं। यदि आप किसी दिनांक को पार्स करते हैं और इसे DateTimeKind.Utc
पर सेट करते हैं, तो ToUniversalTime()
कोई रूपांतरण नहीं करता है।
और यहां "Best Practices Coding with Date Times" पर एक लेख है, और Converting DateTimes with .Net पर एक लेख है।
नहीं। यह वर्तमान समय की परवाह नहीं करता है। यह स्थानीय प्रणाली के टाइमज़ोन की परवाह करता है। –
आप हमेशा * यूटीसी में समय-संबंधित जानकारी स्टोर नहीं करना चाहते हैं। यह पूरी तरह से उस जानकारी पर निर्भर करता है कि वास्तव में वह जानकारी क्या है। समय में प्रतिभागियों को आमतौर पर यूटीसी में दर्शाया जा सकता है, लेकिन सबकुछ तुरंत नहीं है। उदाहरण के लिए, मैं पैडिंगटन से 17:18 ट्रेन पर हूं। "16:18 यूटीसी" के बजाए इसे "17:18 यूरोप/लंदन" के रूप में स्टोर करना समझ में आता है - क्योंकि जब घड़ियों वापस जाते हैं, तो * स्थानीय * समय वही रहता है। –
क्या आप बता सकते हैं कि मैं कैलेंडर से संबंधित उत्पाद पर काम करता हूं? ;) –