इसका कारण यह है कि बीएसओएन डेटटाइम प्रारूप .NET डेटटाइम मान से कम सटीकता के साथ मूल्यों को संग्रहीत करता है, इसलिए जब आप इसे डेटाबेस से वापस पढ़ते हैं तो मान छोटा कर दिया गया है।
यदि आपका डेटटाइम मान एक सी # वर्ग की संपत्ति है जिसे आप क्रमबद्ध कर रहे हैं तो आप सीरियलाइज़र को डेटटाइम मान को एक एम्बेडेड दस्तावेज़ के रूप में क्रमबद्ध करने के लिए कह सकते हैं जिसमें बीएसओएन डेटटाइम मान (छोटा हुआ) और मूल .NET डेटटाइम मान (टिक्स के रूप में संग्रहीत) दोनों शामिल हैं। उस स्थिति में deserialized होने पर मान को छोटा नहीं किया जाएगा।
उदाहरण के लिए:
public class MyClass {
public ObjectId Id;
[BsonRepresentation(BsonType.Document)]
public DateTime MyDateTime;
}
आप Int64 या String के BsonRepresentation का भी उपयोग कर सकते हैं और सटीकता नहीं खो सकते हैं, लेकिन फिर संग्रहीत दस्तावेज़ केवल का उपयोग कर सकते हैं इसमें टिक या एक स्ट्रिंग प्रतिनिधित्व है और कोई बीएसओएन डेटटाइम नहीं है, जिससे डेटटाइम से संबंधित प्रश्नों को करना मुश्किल हो जाता है।
आप यह भी ध्यान रखना चाहेंगे कि डेटटाइम मान यूटीसी में डेटाबेस में संग्रहीत हैं। भंडारण के लिए हमेशा UTC मानों का उपयोग करना और उपयोगकर्ता को उन्हें प्रदर्शित करते समय केवल स्थानीय समय का उपयोग करना सबसे अच्छा अभ्यास है।