सवाल स्ट्रिंग '3/18/09 10:16 अपराह्न' वैध AllXsd मान नहीं है


स्पष्ट रूप से पाठक प्रतिक्रिया प्रारूप से आने वाले इस प्रारूप को पसंद नहीं करता है।

आश्चर्य है कि अगर मैं इसे दोबारा सुधार सकता हूं। बदलने के लिए कोशिश कर रहा है DateTime मेरे साथ निम्नलिखित कोड का उपयोग कर XmlReader:

reader.ReadContentAsDateTime();

44
2018-03-19 11:41


मूल




जवाब:


एक्सएमएल पाठक आम तौर पर एक बहुत ही विशिष्ट प्रारूप में दिनांक / समय की अपेक्षा करते हैं; आप इसका उपयोग कर स्वयं का उपयोग कर सकते हैं XmlConvert:

string s = XmlConvert.ToString(DateTime.Now);
DateTime when = XmlConvert.ToDateTime(s);

यदि आप कुछ और उपयोग कर रहे हैं, तो आपको इसे एक स्ट्रिंग और उपयोग के रूप में पढ़ना होगा DateTime.TryParseExact (या समान) वास्तविक प्रारूप स्ट्रिंग निर्दिष्ट करने के लिए:

string s = reader.ReadContentAsString();
DateTime when = DateTime.ParseExact(s, "M/d/yy hh:mm tt",
     CultureInfo.InvariantCulture);

यदि आप उपयोग कर रहे हैं XmlSerializer, आप रूपांतरण करने के लिए एक शिम संपत्ति का उपयोग कर सकते हैं - अगर आप यही कर रहे हैं तो मुझे बताएं ...


44
2018-03-19 11:46



जिस डेटा को मैं खिला रहा था वह 10/29/2012 15:25 था और यह असफल रहा। जब मैंने इसे 10/11/2012 15:25 में बदल दिया, तो यह काम किया। - Brian Leeming
@MarcGravell, जब मैं कुछ आरएसएस फ़ीड का उपयोग करके deserialize करने की कोशिश XmlSerializer, PubDate तत्व त्रुटि का कारण बनता है। मेरे द्वारा यह कैसे किया जा सकता है? - burhan
@burhan इस बात को देखकर देख रहा है कि मूल्य क्या आ रहा है, और इसे उचित तरीके से संभाला जा रहा है? वैकल्पिक रूप से, मूल ढांचे में आरएसएस-लक्षित वर्ग शामिल हैं जो बेहतर काम कर सकते हैं। - Marc Gravell♦
@burhan xml और आपके मॉडल को देखे बिना नहीं, नहीं - Marc Gravell♦
@burhan समाधान हमेशा के रूप में, एक्सएमएल और एक मॉडल है जो मैच के रूप में है। कभी-कभी इसका मतलब है कि आप सीधे जा सकते हैं - आपको तिथियों को स्ट्रिंग प्रकार (डेटटाइम के बजाए) के रूप में रखना पड़ सकता है और फिर समय को पार्स करने के लिए अतिरिक्त पोस्ट-प्रोसेसिंग करना पड़ सकता है। हालांकि, एक यादृच्छिक लिंक सटीक एक्सएमएल प्रदान नहीं करता है जिसके साथ आप संघर्ष कर रहे हैं। - Marc Gravell♦


एक्सएमएल के मुताबिक योजना spec, दिनांक समय मान ISO8601 प्रारूप में होना चाहिए, उदाहरण के लिए, कुछ ऐसा

2009-03-13T22:16:00

86
2018-03-19 11:48



रूबी उपयोग में iso8601 विधि, उदाहरण के लिए Time.now.iso8601। - Zubin
जिज्ञासा से बाहर, आईएसओ 8601 प्रारूप कुछ दिखना चाहिए 2009-03-18T22:16:00-05:00, लेकिन डेविड का जवाब (टाइमज़ोन को छोड़कर) मेरे लिए भी काम करता है (जबकि आईएसओ 8601 प्रारूप नहीं है)। क्या यह XmlConverter में स्थानीय क्रमिकरण की वजह से है (जिसके लिए टाइमज़ोन की आवश्यकता नहीं है)? - djiango
आईएस 868601 में, टाइमज़ोन वैकल्पिक है, इसलिए मेरी मूल स्ट्रिंग और आपकी स्ट्रिंग दोनों मान्य ISO8601 दिनांक समय हैं। इसके अनुसार w3.org/TR/xmlschema-2/#deviantformatsएक्सएमएल स्कीमा में टाइमज़ोन भी वैकल्पिक है। मुझे यकीन नहीं है कि समय क्षेत्र संस्करण आपके लिए क्यों काम नहीं करता है। - David Norman
PHP कलाविदों के लिए :) वहाँ है toIso8601String विधि में nesbot/carbon PHP lib। - userlond