2011-09-13 16 views
10

में डेटटाइम मान प्रदान करना मैं वर्तमान में एक विशेष क्लाइंट एप्लिकेशन लिख रहा हूं ताकि हमारे यूनिट परीक्षणों को परमाणु फ़ीड के लिए XML संरचना का उपयोग करके ओडाटा इंटरफ़ेस के साथ काम करने की अनुमति मिल सके। सभी ठीक से काम कर रहे प्रतीत होते हैं, लेकिन जब मुझे डेटटाइम मान को संपत्ति के रूप में पास करने की आवश्यकता होती है तो मैं परेशानी में पड़ रहा हूं।ओडाटा

मैं निम्नलिखित कोड है कि एक विशिष्ट प्रारूप में वस्तु और यह स्टोर की संपत्ति से दिनांक समय मूल्य अर्क लिखा है:

private static void GenerateProperty<T>(StringBuilder xml, T obj, PropertyInfo info) 
     { 
      // Extract the information about the property if it contains a value. 
      if (info.GetValue(obj, null) == null) return; 
      string type = info.GetGetMethod().ReturnType.ToString().Split('.').Last(); 
      string value = info.GetValue(obj, null).ToString(); 
      if (type == "DateTime") 
       value = ((DateTime)info.GetValue(obj, null)).ToString("yyyy-mm-ddThh:mm:ss"); 
      if (type == "Boolean") value = value.ToLower(); 

      // Append the property to the generated XML. 
      xml.Append(type.ToLower().Equals("string") ? 
        string.Format("<d:{0}>{1}</d:{0}>", info.Name, value) : 
        string.Format("<d:{0} m:type=\"Edm.{1}\">{2}</d:{0}>", info.Name, type, value)); 
     } 

कोड प्रतिबिंब पर भारी है, लेकिन उस समय के बगल में है। , 41Z

हालांकि मैं अपने OData सेवा से निम्न त्रुटि प्राप्त कर रहा हूँ: मान दिनांक समय के लिए इस कोड द्वारा लौटाए गए निम्न स्वरूप में हैं: 2011-49-13T11: 49

अनुरोध प्रसंस्करण त्रुटि स्ट्रीम। 'System.DateTime' टाइप करने के लिए प्रॉपर्टी 'निर्मित' के लिए अनुरोध पेलोड से मान को परिवर्तित करने में त्रुटि आई, जो संपत्ति की अपेक्षित प्रकार है। अधिक विवरण के लिए आंतरिक अपवाद देखें। स्ट्रिंग '2011-49-13T11: 49: 41Z' मान्य AllXsd मान नहीं है। System.FormatException System.Xml.XmlConvert.ToDateTime (स्ट्रिंग है, XmlDateTimeSerializationMode dateTimeOption) System.Data.Services.Parsing.WebConvert.StringToPrimitive पर (स्ट्रिंग पाठ, प्रकार TargetType) System.Data पर पर। Services.Serializers.PlainXmlDeserializer.ConvertValuesForXml (वस्तु मूल्य, स्ट्रिंग प्रॉपर्टी, प्रकार typeToBeConverted)

तो जाहिरा तौर पर यह दिनांक समय प्रारूप नहीं समझती, लेकिन जब मैं प्रलेखन पर देखने कि यहां पोस्ट है: http://www.odata.org/developers/protocols/overview#AbstractTypeSystem

मुझे उम्मीद है कि यह मान्य होगा। किसी के भी पास इस के साथ कोई भी अनुभव है?

+0

आपका कोड 'Z' AFAICT को आउटपुट नहीं कर रहा है लेकिन आपका त्रुटि संदेश निश्चित रूप से यह इंगित करता है कि आपका वास्तविक कोड है। –

उत्तर

17

yyyy-mm-ddThh:mm:ss

yyyy-MM-ddTHH:mm:ssZ

+0

जो इसे हल किया गया, धन्यवाद –

+0

ठंडा, क्या आप उत्तर के रूप में चिह्नित कर सकते हैं? – kmcc049

+0

पूर्णता के लिए: यदि आपको आंशिक सेकंड और/या समय क्षेत्र ऑफसेट की भी आवश्यकता है, तो '2016-04-30T23: 59: 59.999 + 02: 00' जैसे कुछ का उपयोग करें। यूआरएल में इसे भेजने पर 'प्लस' से बचने के लिए सुनिश्चित करें: '2016-04-30T23: 59: 59.999% 2B02: 00' –

3

ToString ("ओ") होना चाहिए भी समस्या का समाधान होगा।

+0

यह वास्तव में काम नहीं करता है। अपलोड करते समय, मुझे एक त्रुटि मिलती है, अधिकतर उन सभी अतिरिक्त अंकों के कारण जो इसका समर्थन नहीं करती हैं। –

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