2015-10-27 6 views
16

कास्टिंग करते समय 1 तर्क लेता है, मैं अपने एंगुलर यूई-डेटपिकर से अपने SQL डेटाबेस में एक तिथि सहेजने की कोशिश कर रहा हूं। तिथि प्रारूप में है (10-27-2015 12:00 पूर्वाह्न) लेकिन ऐसा नहीं बचा लेगा मैं इसे एसक्यूएल दिनांक समय फ़ॉर्मेट में बदलने के लिए निम्न उपयोग करने की कोशिश:।विधि 'ToString' के लिए कोई ओवरलोड दिनांक

DateTime? myDate = form.dteStartDate; 
    string sqlFormattedDate = myDate.ToString("yyyy-MM-dd HH:mm:ss"); 

लेकिन मैं त्रुटि प्राप्त "विधि 'ToString' के लिए कोई अधिभार 1 तर्क लेता है। एसक्यूएल में फ़ील्ड 'डेटाटाइम' टाइप है।

किसी भी सहायता की बहुत सराहना की जाती है।

DateTime? myDate = form.dteStartDate; 
string sqlFormattedDate = myDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); 

बेशक इस मामले का कोई मूल्य नहीं है कि वहाँ संभाल नहीं करता है:

+0

आपका जवाब, कहते हैं 'myDate' एक नहीं है 'डेटटाइम', इसका एक 'शून्य''है, इसलिए जब आप' ToString' को कॉल करते हैं तो इसे 'Nullable ' प्रकार पर कॉल करें, 'डेटटाइम' नहीं। –

उत्तर

46

आप का उपयोग करने के DateTime.ToString(format) नहीं Nullable<DateTime>.ToString(no overload) चाहते हैं। शायद इस तरह कुछ:

string sqlFormattedDate = myDate.HasValue 
    ? myDate.Value.ToString("yyyy-MM-dd HH:mm:ss") 
    : "<not available>"; 
+0

myDate.Value.HasValue त्रुटि लौटाएगा। यह myDate होना चाहिए। HasValue? startDate.Value.ToString ("yyyy-MM-dd hH: mm: ss") –

+0

@Ebenezar: ज़ाहिर है, धन्यवाद :) –

+0

यदि आप दृश्यों के पीछे एक छोटे मुक्केबाजी के साथ रह सकते हैं, और यदि आप खाली स्ट्रिंग चाहते हैं मामला 'myDate' शून्य है,' स्ट्रिंग sqlFormattedDate = $ "{myDate: yyyy-MM-dd hH: mm: ss}"; 'के साथ एक छोटा वाक्यविन्यास संभव है। सी # 6 (इंटरपोलेटेड तार) की आवश्यकता है। मुक्केबाजी द्वारा 'ऑब्जेक्ट' संदर्भ में 'ऑब्जेक्ट' संदर्भ में आंतरिक रूप से काम करता है। यदि यह एक शून्य संदर्भ बन जाता है, खाली स्ट्रिंग का उपयोग किया जाता है। अन्यथा, यह पुष्टि की जाती है कि बॉक्स का रन-टाइम प्रकार 'IFormattable' लागू करता है, और उस इंटरफ़ेस से संबंधित' ToString' अधिभार का उपयोग किया जाता है। –

0

यह ठीक काम करेगा।

DateTime? strDate = form.dteStartDate; 
strDate.Value.ToString("yyyy-MM-dd HH:mm tt"); 
3
string sqlFormattedDate = ((DateTime)myDate).ToString("yyyy-MM-dd HH:mm:ss"); 
इसके अलावा

अगर आप .cshtml में सर्वर-साइड कोड का उपयोग करें और (उदाहरण के लिए) के रूप में नीचे इस कास्टिंग का प्रबंधन कर सकते हैं:

<label>Establish: @(((DateTime)Model.EstablishDate).ToString("yyyy-MM-dd"))</label> 
संबंधित मुद्दे