डेटटाइम कैसे कन्वर्ट करें? आज तक


171

मैं एक अशक्त DateTime ( DateTime?) को एक में बदलना चाहता हूं DateTime, लेकिन मुझे एक त्रुटि मिल रही है:

स्पष्ट रूप से 'System.DateTime?' 'System.DateTime' को। एक स्पष्ट रूपांतरण मौजूद है (क्या आप किसी कलाकार को याद कर रहे हैं?)

मैंने निम्नलिखित प्रयास किया है:

DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null 
    ? DateTime.Now : _objHotelPackageOrder.UpdatedDate;

जवाबों:


304

आप अशक्त- coalescing ऑपरेटर का उपयोग करना चाहते हैं , जो बिल्कुल इस उद्देश्य के लिए डिज़ाइन किया गया है।

इसका उपयोग करके आप इस कोड को समाप्त करते हैं।

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;

1
यहाँ एक स्निपेट है जिसे मैंने एक प्रस्तुतकर्ता के भीतर एक अशक्त दिनांक / समय के साथ एक दृश्य भरने के लिए इस्तेमाल किया: memDateLogin = m.memDateLogin ?? DateTime.MinValue
रवि राम

'दिनांक और समय?' खुराक में 'UpdatedDate' की परिभाषा नहीं है
Vasil Valchev

88

MS ने इसके लिए पहले से ही एक विधि बना रखी है, इसलिए आपको नॉट कोलेसिंग ऑपरेटर का उपयोग करना होगा। कार्यक्षमता में कोई अंतर नहीं है, लेकिन गैर-विशेषज्ञों के लिए यह आसान है कि एक नज़र में क्या हो रहा है।

DateTime updatedTime = _objHotelPackageOrder.UpdatedDate.GetValueOrDefault(DateTime.Now);

43

इसे इस्तेमाल करे

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;

यहाँ मुख्य बात यह है कि अशक्त-सहवर्ती ऑपरेटर, देखें chills42 का उत्तर अधिक जानकारी।
cspolton

24

आप एक साधारण कास्ट का उपयोग कर सकते हैं:

DateTime dtValue = (DateTime) dtNullAbleSource;

जैसा कि लिएंड्रो ट्यूपोन ने कहा, आपको यह जांचना होगा कि क्या संस्करण पहले शून्य है


6
बिल्कुल सही अगर आप जाँचते हैं कि क्या var +1 से पहले शून्य है
Leandro

22

आपको nullable DateTime की मान संपत्ति को कॉल करने की आवश्यकता है । यह एक DateTime लौटाएगा।

यह मानते हुए कि UpdatedDateहै DateTime?, तो यह काम करना चाहिए:

DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null ? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value;

कोड को पढ़ने में थोड़ा आसान बनाने के लिए, आप चेक के बजाय HasValue प्रॉपर्टी का उपयोग कर सकते हैं null:

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue
                          ? _objHotelPackageOrder.UpdatedDate.Value
                          : DateTime.Now;

यह तो और भी अधिक संक्षिप्त किया जा सकता है:

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;

6

निम्नलिखित के बारे में कैसे:

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue ? _objHotelPackageOrder.UpdatedDate.value : DateTime.Now;

6

यहाँ एक स्निपेट है जिसे मैंने प्रस्तुतकर्ता के भीतर एक अशक्त दिनांक / समय के साथ देखने के लिए उपयोग किया है

memDateLogin = m.memDateLogin ?? DateTime.MinValue


1

निम्नलिखित का उपयोग करने पर विचार करें जो स्वीकृत उत्तर की तुलना में कहीं बेहतर है

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate == null 
    ? DateTime.Now : (DateTime)_objHotelPackageOrder.UpdatedDate;

यह कहने के लिए कि इसकी बेहतर देखभाल क्यों है?
n4rzul


0
DateTime UpdatedTime = _objHotelPackageOrder.HasValue ? _objHotelPackageOrder.UpdatedDate.Value : DateTime.Now;

4
आपके सुझावों / उत्तरों की व्याख्या करने के लिए यह सामान्य रूप से अच्छा माना जाता है। कोड केवल उत्तर आश्चर्यजनक रूप से बिना सूचना के हो सकते हैं, भले ही वे तकनीकी रूप से सही हों।
मैक्सिमिलियन एस्ट

1
@MaximilianAst हाँ, आप सही हैं जिस तरह से आपने सुझाव दिया है उसे लागू करने की कोशिश करेंगे :)
हर्ष व्यास
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.