2008-10-31 9 views
85

.NET का उपयोग कर XML फ़ाइल में लिखते समय दिनांक/समय के लिए मैं किस प्रारूप का उपयोग करता हूं? क्या मैं बस DateTime.ToString() का उपयोग करता हूं, या क्या मुझे एक विशिष्ट प्रारूप का उपयोग करना है?किसी XML फ़ाइल में दिनांक/समय के लिए उपयोग करने के लिए सही प्रारूप क्या है

उत्तर

119

मैं हमेशा ISO 8601 प्रारूप (उदा। 2008-10-31T15:07:38.6875000-05:00) का उपयोग करता हूं - date.ToString("o")। यह XSD date format भी है। यह पसंदीदा प्रारूप और Standard Date and Time Format string है, हालांकि यदि आप दिनांक और समय के बीच 'टी' नहीं चाहते हैं, तो आप मैन्युअल प्रारूप स्ट्रिंग का उपयोग कर सकते हैं: date.ToString("yyyy-MM-dd HH:mm:ss");

संपादित करें: यदि आप जेनरेट क्लास का उपयोग कर रहे हैं एक एक्सएसडी या वेब सेवा, आप सीधे क्लास प्रॉपर्टी पर डेटटाइम इंस्टेंस असाइन कर सकते हैं। यदि आप एक्सएमएल टेक्स्ट लिख रहे हैं, तो उपरोक्त का प्रयोग करें।

3

डीटीडी को क्या कहना है?

यदि XML फ़ाइल अन्य मौजूदा सॉफ़्टवेयर (उदा।, SOAP) के साथ संचार करने के लिए है, तो उस सॉफ़्टवेयर को इसकी अपेक्षा के लिए जांचें।

यदि एक्सएमएल फ़ाइल धारावाहिक या गैर-मौजूदा सॉफ़्टवेयर के साथ संचार के लिए है (उदाहरण के लिए, जिसे आप लिख रहे हैं), तो आप इसे परिभाषित कर सकते हैं। इस मामले में, मैं कुछ ऐसा सुझाव दूंगा जो आपकी पसंद की भाषा में पार्स करना आसान है, और मनुष्यों के लिए पढ़ने में आसान है। उदाहरण के लिए, यदि आपकी भाषा (चाहे वीबी.नेट या सी # .NET या जो भी हो) आपको आसानी से आईएसओ तिथियों (वाई वाईवायवाई-एमएम-डीडी) को पार्स करने की अनुमति देती है, यही वह है जिसे मैं सुझाता हूं।

38

संपादित करें: यह बुरी सलाह है। ऊपर के रूप में "ओ" का प्रयोग करें। "एस" गलत बात करता है।

मैं हमेशा इस का उपयोग करें:

dateTime.ToUniversalTime().ToString("s"); 

यह सही है अपने स्कीमा इस तरह दिखता है:

<xs:element name="startdate" type="xs:dateTime"/> 

कौन सा परिणाम होगा:

<startdate>2002-05-30T09:00:00</startdate> 

आप और अधिक जानकारी प्राप्त कर सकते हैं यहां: http://www.w3schools.com/xml/schema_dtypes_date.asp

+8

ध्यान रखें कि यह तिथि यूटीसी में परिवर्तित हो जाती है। जब आप तिथि को संसाधित करते हैं, तो आपको इसे लोकेल के आधार पर अपने वर्तमान टाइमज़ोन में परिवर्तित करना होगा (जब तक कि आप यूटीसी में सब कुछ संसाधित नहीं कर रहे हों)। इसके अलावा, आमतौर पर आप यूटीसी की तारीख को इंगित करने के अंत में 'Z' डाल देंगे। साबुन ui से .net वेब सेवा को कॉल करते समय – Ryan

+0

"एस" मेरे लिए काम करता है। –

4

यदि आप XML स्ट्रिंग मैन्युअल रूप से var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ")); का उपयोग कर रहे हैं तो यह आधिकारिक XML दिनांक समय प्रारूप आउटपुट करेगा। लेकिन अगर आप अंतर्निहित धारावाहिक तरीकों का उपयोग करते हैं तो आपको प्रारूप के बारे में चिंता करने की ज़रूरत नहीं है।

+0

जॉनीनी की मूल रूप से वही परिणाम लौटाएगा। – chilltemp

+3

इस मामले में सभी तिथियां यूटीसी समय क्षेत्र में होनी चाहिए अन्यथा "Z" प्रत्यय का उपयोग गलत है। – Fr0sT

+0

मैं पूर्व टिप्पणी दोहरा दूंगा - यह वास्तव में गलत है अगर डीटी utc नहीं है। –

0

XmlConvert कक्षा इस तरह की सुविधाएं प्रदान करता है। डेटटाइम के बारे में, विशेष रूप से, अप्रचलित विधियों के बारे में सावधान रहें। यह भी देखें: https://stackoverflow.com/a/7457718/1288109

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