2011-10-20 23 views
5

क्या कोई देख सकता है कि मैं यहाँ क्या गलत कर रहा हूं? Assert.IsTrue(parses) हमेशा विफल रहता है।यह डेटटाइम पार्स हमेशा क्यों विफल रहता है?

[TestMethod] 
    public void Can_Parse_To_DateTime() 
    { 
     DateTime expected = new DateTime(2011, 10, 19, 16, 01, 59); 
     DateTime actual; 

     string value = "Wed Oct 19 16:01:59 PDT 2011"; 
     string mask = "ddd MMM dd HH:mm:ss xxx YYYY"; 

     bool parses = DateTime.TryParseExact(value, mask, 
              CultureInfo.InvariantCulture, 
              DateTimeStyles.None, 
              out actual); 

     Assert.IsTrue(parses); 
     Assert.AreEqual(expected, actual); 
    } 

मैं भी इस प्रकार की कोशिश की है, एक ही परिणाम के साथ:

[TestMethod] 
    public void parsing() 
    { 
     DateTime expected = new DateTime(2011, 10, 19, 16, 01, 59); 
     DateTime actual; 

     string value = "Wed Oct 19 16:01:59 PDT 2011"; 
     string mask = "ddd MMM dd HH:mm:ss YYYY"; // note removal of "xxx " 

     value = value.Remove(20, 4); // removal of the "PDT " 
     bool parses = DateTime.TryParseExact(value, mask, 
              CultureInfo.InvariantCulture, 
              DateTimeStyles.None, 
              out actual); 

     Assert.IsTrue(parses); 
     Assert.AreEqual(expected, actual); 
    } 
+0

वर्ष "yyyy" (निचला मामला) होना चाहिए, लेकिन मुझे यकीन नहीं है कि कोई भी प्रारूप स्ट्रिंग है जो "पीडीटी" की व्याख्या करेगी। –

+0

@ मैट हैमिल्टन - यह जवाब है! इसे बदल दिया और यह काम करता है। एक उत्तर के रूप में पोस्ट करें और मैं इसे स्वीकार करूंगा। –

+0

चलो @ एएल प्रतिनिधि है। :) –

उत्तर

3

मैट हैमिल्टन द्वारा बताया गया है, yyyy लोअरकेस होना चाहिए। और xxx पूरी तरह से अमान्य है। आप रिवर्स विधि DateTime.ToString(format,CultureInfo.InvariantCulture) का उपयोग करके हमेशा अपनी प्रारूप स्ट्रिंग का परीक्षण कर सकते हैं।

+0

इस पिछले प्रश्न के अनुसार आप ऑफसेट समय क्षेत्र के साथ समय क्षेत्र स्ट्रिंग की जगह ले सकता है और यह काम करेगा - http://stackoverflow.com/questions/241789/parse-datetime-with-timezone-of-form-pst-cest-utc -etc –

+0

वास्तव में ऐसा है कि आपने रिवर्स चेक का प्रयास करने का विकल्प दिया है। जब मुझे समान दर्द होता तो यह मेरे साथ नहीं हुआ था। अभी भी ओपी के लिए कुल फिक्स नहीं है, लेकिन सही दिशा में एक कदम है। –

संबंधित मुद्दे