ज्यादातर मामलों में आप डेटाबेस में यूटीसी दिनांक समय संग्रहीत करना चाहते हैं, इसलिए आपका दिनांक समय इस प्रकार बनाया जाना चाहिए:-
DateTest = new DateTime(2013, 10, 13, 0, 0, 0, DateTimeKind.Utc) //this is the date
इसके साथ ही आपका पहला टिप्पणी इकाई परीक्षण अब पास हो गया है।
DateTimeKind
निर्दिष्ट किए बिना आप इसे मौके पर छोड़ रहे हैं। MongoDB यह मानता है कि यह स्थानीय है और इसे डेटाबेस में UTC में बदल देता है।
यह भी ध्यान दें कि MongoDB डेटटाइम मानों में .NET दिनांक समय मानों की तुलना में कम सटीकता होती है। यदि आप मनमाने ढंग से डेटटाइम मानों को संग्रहीत करना चाहते हैं और उन्हें इस तरह वापस प्राप्त करना चाहते हैं कि वे अभी भी मेल खाते हैं तो आपको उन्हें संग्रहीत करने से पहले उन्हें निकटतम मिलीसेकंड में गोल करना होगा।
यदि आप वास्तव में स्थानीय समय संग्रहीत करना चाहते हैं, तो मेरा सुझाव है कि आप DateTime
. से स्विच करें करने के लिए DateTimeOffset
और इसे UTC दिनांक समय के लिए एक लंबे टिक मान और ऑफ़सेट के लिए मान के रूप में क्रमबद्ध करें।
ध्यान दें कि जब तक आप डेटटाइम मान प्राप्त होने पर गणना की गई ऑफसेट को स्टोर नहीं करते हैं, तब तक लोकलटाइम में कनवर्ट करने के लिए .NET विधियां अनिवार्य रूप से बेकार हैं क्योंकि वे नहीं जानते कि डेलाइट सेविंग टाइम कब शुरू हुआ, और न ही वे यह भी जानते हैं कि डेटटाइम वैल्यू किस ज़ोन में आती है। से। कुल मिलाकर, .NET डेटटाइम हैंडलिंग वांछित होने के लिए बहुत कुछ छोड़ देता है और इसमें कई भ्रामक तरीके शामिल हैं जो मदद करने का दावा करते हैं लेकिन वास्तव में नहीं करते हैं।