2009-05-27 28 views
8

मैं वर्तमान में British summer time में हूं जो यूटीसी +1 घंटा है। मैंने पुष्टि की कि मेरा पीसी निम्नलिखित कोड के साथ सही है और यह सच हो जाता है।डेटटाइम.Now.ToString ("u") क्यों काम नहीं करता है?

System.TimeZone.CurrentTimeZone.IsDaylightSavingTime(Date.Now) 

मेरा प्रश्न तो यही कारण है कि के रूप में मैं उम्मीद करेंगे यूटीसी फ़ॉर्मेटर काम नहीं करता:

DateTime.Now.ToString("u") 

यह उम्मीद के रूप में लेकिन जेड के साथ UTC स्वरूप में नीचे के रूप में सटीक मौजूदा प्रणाली की तारीख रिटर्न (Zulu Time) अंत में +01: 00 नहीं?

अर्थात

2009-05-27 14:21:22Z 

नहीं

2009-05-27 14:21:22+01:00 

यह सही कार्यक्षमता है?

उत्तर

18

MSDN राज्यों निम्नलिखित:

एक कस्टम दिनांक और समय प्रारूप स्ट्रिंग DateTimeFormatInfo.UniversalSortableDateTimePattern संपत्ति द्वारा परिभाषित प्रतिनिधित्व करता है। पैटर्न एक निर्धारित मानक को दर्शाता है और संपत्ति केवल पढ़ने के लिए है। इसलिए, यह हमेशा इस्तेमाल की जाने वाली संस्कृति या प्रारूप प्रदाता की परवाह किए बिना समान है। कस्टम प्रारूप स्ट्रिंग "yyyy '-' MM '-' dd hH ':' mm ':' ss'Z '" है।

जब यह मानक प्रारूप विनिर्देशक उपयोग किया जाता है, स्वरूपण या पार्सिंग ऑपरेशन हमेशा इनवेरिएंट संस्कृति का उपयोग करता है।

स्वरूपण दिनांक और समय वस्तु के लिए समय क्षेत्र को परिवर्तित नहीं करता है। इसलिए, एप्लिकेशन को इस प्रारूप विनिर्देशक का उपयोग करने से पहले एक तिथि और समय कोऑर्डिनेटेड यूनिवर्सल टाइम (यूटीसी) में परिवर्तित करना होगा।

आप प्रारूपित से पहले यूटीसी के लिए अपने वर्तमान तिथि परिवर्तित करने के लिए निम्न कोड का उपयोग करना चाहिए:

DateTime.UtcNow.ToString("u") 

या

DateTime.Now.ToUniversalTime().ToString("u") 

प्रारूप आप की उम्मीद में प्रदर्शित करने के लिए (यानी 2009- 05-27 14: 21: 22 + 01: 00), आपको कस्टम दिनांक प्रारूप का उपयोग करने की आवश्यकता होगी:

DateTime.Now.ToString("yyyy-MM-dd HH:mm:sszzz"); 
+2

धन्यवाद - मुझे वास्तव में दस्तावेज़ों को पढ़ना चाहिए! – John

+2

यह भी काम करता है: 'DateTime.UtcNow.ToString ("u"); ' –

5

"यू" सार्वभौमिक क्रमबद्ध दिनांक/समय पैटर्न है, यूटीसी प्रारूप नहीं; के शब्दों में documentation:।

एक कस्टम दिनांक और समय प्रारूप स्ट्रिंग DateTimeFormatInfo .. :: UniversalSortableDateTimePattern संपत्ति द्वारा परिभाषित प्रतिनिधित्व करता है। पैटर्न एक निर्धारित मानक को दर्शाता है और संपत्ति केवल पढ़ने के लिए है। इसलिए, यह हमेशा इस्तेमाल की जाने वाली संस्कृति या प्रारूप प्रदाता की परवाह किए बिना समान है। कस्टम प्रारूप स्ट्रिंग "yyyy '-' MM '-' dd hH ':' mm ':' ss'Z '" है।

जब यह मानक प्रारूप विनिर्देशक उपयोग किया जाता है, स्वरूपण या पार्सिंग ऑपरेशन हमेशा इनवेरिएंट संस्कृति का उपयोग करता है।

स्वरूपण दिनांक और समय वस्तु के लिए समय क्षेत्र को परिवर्तित नहीं करता है।इसलिए, एप्लिकेशन को इस प्रारूप विनिर्देशक का उपयोग करने से पहले एक तिथि और समय कोऑर्डिनेटेड यूनिवर्सल टाइम (यूटीसी) में परिवर्तित करना होगा।

3

आपको डेटटाइम.Now.ToUniversalTime()। ToString ("u") का उपयोग करने की आवश्यकता है।

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