2013-08-22 8 views
7

मैं दिनांक/समय प्रारूप, उदाहरण के लिए: "1 मार्च 13 92230" this document और this link के अनुसार प्रारूप इस प्रकार है: "डी-mmm-yy Hmmss", क्योंकि:का दिनांक और समय रूपांतरण - DateTime.ParseExact() काम नहीं कर के रूप में उम्मीद

Day is single digit, 1-30 
Month is 3 letter abbreviation, Jan/Mar etc. 
Year is 2 digits, eg 12/13 
Hour is single digit for 24 hour clock, eg 9, 13 etc. (no 09) 
Minute is standard (eg 01, 52) 
Second is standard (eg 30, 02) 

मैं अपने कार्यक्रम में निम्नलिखित कोड को चलाने के लिए कोशिश कर रहा हूँ, लेकिन मैं का एक त्रुटि मिलती रहती है "स्ट्रिंग एक मान्य दिनांक समय के रूप में पहचाना गया था।"

string input = "1-Mar-13 92330"; 
     var date = DateTime.ParseExact(input, "d-MMM-yy Hmmss", 
System.Globalization.CultureInfo.CurrentCulture); 

कृपया मदद, मैं दिनांक समय रूपांतरण के साथ भी परिचित नहीं हूँ, लेकिन मैं नहीं देख सकते हैं, जहां मैं गलत यहाँ चले गए हैं। धन्यवाद!

अद्यतन: क्या ऐसा इसलिए है क्योंकि समय के बीच कोलन के बिना पार्स नहीं किया जा सकता है? (उदाहरण के लिए 1 मार्च 13 09:22:30 पार्स हो जाता है, लेकिन मैं एक बाहरी डेटा स्रोत है कि एच के लिए Hmmss से पुनर्लेखन के लिए असंभव हो जाएगा है: mm: ss)

उत्तर

4

आप अपने तारीख को ठीक कर सकते हैं:

var parts = "1-Mar-13 92230".Split(' '); 

if (parts[1].Length == 5) 
{ 
    parts[1] = "0" + parts[1]; 
} 

var newDate = parts[0] + " " + parts[1]; 

var date = DateTime.ParseExact(newDate, "d-MMM-yy HHmmss", System.Globalization.CultureInfo.CurrentCulture); 
+0

यह मेरे लिए काम करता है। प्रश्न में दिनांक/समय के साथ परीक्षण किया गया, और "1-मार्च -13 102230"। सभी मामलों के लिए काम करता है। सबसे महत्वपूर्ण बात यह है कि जहां तक ​​स्रोत डेटा संशोधित नहीं होता है (उदाहरण के लिए रिक्त स्थान इत्यादि)। धन्यवाद! – John

4

msdn से:

यदि प्रारूप एक कस्टम प्रारूप पैटर्न है जिसमें दिनांक या समय विभाजक (जैसे "yyyyMmdd HHmm") शामिल नहीं है, तो प्रदाता पैरामीटर के लिए invariant संस्कृति और प्रत्येक कस्टम प्रारूप विनिर्देशक का विस्तृत रूप शामिल करें। उदाहरण के लिए, यदि आप प्रारूप पैटर्न में घंटे निर्दिष्ट करना चाहते हैं, तो संकुचित रूप, "एच" के बजाय व्यापक रूप, "एचएच" निर्दिष्ट करें।

तो आप की कोशिश कर सकते हैं:

string input = "1-Mar-13 92330"; 
     var date = DateTime.ParseExact(input, "d-MMM-yy Hmmss", 
System.Globalization.CultureInfo.InvariantCulture); 
+0

यह अभी भी अपवाद दे रहा है "स्ट्रिंग एक मान्य दिनांक समय के रूप में पहचाना गया था"। – Rex

+0

मैं दूसरी रेक्स की टिप्पणी। किसी भी कारण से, मुझे अभी भी अपवाद मिल गया है – John

+0

यह सही नहीं है, अपवाद अभी भी – Anand

0

आपका घंटे मिनट और सेकंड, अलग किया जा के रूप में वे प्रतिष्ठित नहीं हो रहे जरूरत है।

string input = "1-Mar-13 9 23 30"; 
     var date = DateTime.ParseExact(input, "d-MMM-yy H mm ss", System.Globalization.CultureInfo.CurrentCulture); 
1

आपका इनपुट स्ट्रिंग प्रारूप

string input = "1-Mar-13 092330"; 

निम्न में से होना करने के लिए आप अपने लिंक पर वापस जाते हैं, यह कहते हैं

H 24-hour clock hour (e.g. 19) 

अब एच 24 घंटे है, यह प्रतिनिधित्व होना चाहिए अग्रणी 0 के साथ। यदि कल्पना नहीं की जाती है कि आप 9 से अधिक घंटों के मामले को कैसे संभालेंगे यानी जो दो अंकों में हैं।

यदि आपका घंटा और मिनट और सेकेंड अलग नहीं किया जाना है।

string input = "1-Mar-13 9 2330"; 

var date = DateTime.ParseExact(input, "d-MMM-yy H mmss", 
System.Globalization.CultureInfo.InvariantCulture); 
संबंधित मुद्दे