2013-05-27 3 views
27

सी # का उपयोग करने के लिए कैसे सेट करें। मेरे पास एक स्ट्रिंग dateTimeEnd है।डेटटाइम को

स्ट्रिंग सही प्रारूप में है, तो मैं एक DateTime पैदा करते हैं और प्रकार के eventCustom.DateTimeEnd के लिए असाइन करें

public Nullable<System.DateTime> DateTimeEnd { get; set; } 

तो dateTimeEnd शून्य या खाली है मैं अशक्त करने के लिए eventCustom.DateTimeEnd सेट की जरूरत करना चाहते हैं।

मैं निम्नलिखित कोड का उपयोग करके इसे प्राप्त करने की कोशिश कर रहा हूं लेकिन मुझे eventCustom.DateTimeEnd के लिए हमेशा शून्य मिलता है।

क्या आप कृपया मेरी मदद कर सकते हैं कि मेरे कोड में क्या गलत है?

DateTime? dateTimeEndResult; 
    if (!string.IsNullOrWhiteSpace(dateTimeEnd)) 
     dateTimeEndResult = DateTime.Parse(dateTimeEnd); 


eventCustom.DateTimeEnd = dateTimeEndResult = true ? (DateTime?)null : dateTimeEndResult; 

उत्तर

70

ऐसा लगता है कि तुम सिर्फ चाहते हैं का उपयोग कर सकते हैं:

eventCustom.DateTimeEnd = string.IsNullOrWhiteSpace(dateTimeEnd) 
    ? (DateTime?) null 
    : DateTime.Parse(dateTimeEnd); 

नोट यह है कि 0 अगर अपवाद फेंक देगामान्य तिथि नहीं है।

एक वैकल्पिक होगा:

DateTime validValue; 
eventCustom.DateTimeEnd = DateTime.TryParse(dateTimeEnd, out validValue) 
    ? validValue 
    : (DateTime?) null; 

कि अब null के परिणाम तय करेंगे, तो dateTimeEnd मान्य नहीं है। ध्यान दें कि TryParse कोई समस्या नहीं होने पर इनपुट के रूप में null को संभालता है।

+1

यह बहुत अच्छा काम करता है! आपके समय के स्पष्टीकरण के लिए धन्यवाद :-) – GibboK

+0

क्या यह अन्य तरीकों से नहीं होना चाहिए? मेरा मतलब है कि स्ट्रिंग में "IsNullOrWhiteSpace" 'है, शून्य मान फ़ील्ड को असाइन किया जाना चाहिए, इसलिए '(डेटटाइम?) नल' सशर्त ऑपरेटर – sohaiby

+0

@ सोहाइबी के बाद आना चाहिए: हां, अच्छी तरह से देखा गया। ठीक कर देंगे। –

3

यह काम करना चाहिए: यदि स्ट्रिंग सही स्वरूप में नहीं है

if (!string.IsNullOrWhiteSpace(dateTimeEnd)) 
    eventCustom.DateTimeEnd = DateTime.Parse(dateTimeEnd); 
else 
    eventCustom.DateTimeEnd = null; 

ध्यान दें कि यह एक अपवाद फेंक देते हैं।

+1

'dateTimeEndResult'' सत्य' कैसे हो सकता है? यह 'डेटटाइम' है, न कि 'बूल'। –

+0

इसे करने का प्रयास करने में मुझे त्रुटि मिली ऑपरेटर'== 'प्रकार के ऑपरेटरों पर लागू नहीं किया जा सकता' System.DateTime?'और' बूल ' – GibboK

+0

@ जोन्स स्केट मैंने इसे गलत प्रकार के रूप में टाइप किया जब मैं इसका परीक्षण कर रहा था। मैंने इसे अभी सही किया। –

1

आप डेटटाइम लिख सकते हैं? newdate = शून्य;

1

यह पंक्ति:

eventCustom.DateTimeEnd = dateTimeEndResult = true ? (DateTime?)null : dateTimeEndResult; 

रूप में ही है:

eventCustom.DateTimeEnd = dateTimeEndResult = (true ? (DateTime?)null : dateTimeEndResult); 

क्योंकि सशर्त ऑपरेटर ? असाइनमेंट ऑपरेटर = तुलना में एक उच्च पूर्वता है। यही कारण है कि आप हमेशा eventCustom.DateTimeEnd के लिए शून्य प्राप्त करते हैं। (MSDN Ref)

0

अब, मैं DateTime? का उपयोग नहीं कर सकता, मैं सभी डेटा प्रकारों के लिए DBNull.Value का उपयोग कर रहा हूं। यह बहुत अच्छा काम करता है।

eventCustom.DateTimeEnd = string.IsNullOrWhiteSpace(dateTimeEnd) 
    ? DBNull.Value 
    : DateTime.Parse(dateTimeEnd); 
संबंधित मुद्दे