2015-02-18 8 views
5

मैं यूटीसी समय अंतर के संदर्भ में स्थानीय डेटाटाइम प्राप्त करने की कोशिश कर रहा हूं और मैं नीचे इस कोड को निष्पादित कर रहा हूं।DateTimeInvalidLocalFormat

var dtString =DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fzzz"); 

लेकिन हर बार यह मेरे

enter image description here

के रूप में एक अपवाद लौट क्यों यह अपवाद नहीं है, यह कैसे तय करने के लिए?

+2

आप https://msdn.microsoft.com/library/ms172213 को देखा है:

इसके अलावा, आप समय क्षेत्र और अच्छे उदाहरण यहाँ बारे में अधिक जानकारी मिल सकती है? –

+1

यह एक अपवाद नहीं है, यह सिर्फ एक डीबगर चेतावनी है। जारी रखने के लिए F5 दबाएं।यदि आप इसे देखना नहीं चाहते हैं तो डीबग> अपवाद> प्रबंधित डिबगिंग सहायक> का उपयोग करें DateTimeInvalidLocalFormat विकल्प को अनचेक करें। एक बकवास स्ट्रिंग उत्पन्न करने के बारे में कुछ परेशान करें, यूटीसी की तारीख में यूटीसी ऑफसेट नहीं है। –

+0

धन्यवाद @ हंसपैसेंट, समझ गया, बेवकूफ मैंने यूटीसी तिथि और ऑफसेट के बारे में नहीं सोचा था। – vijayp

उत्तर

5

z प्रारूप विनिर्देश का उपयोग स्थानीय समय और यूटीसी समय के बीच ऑफसेट दिखाने के लिए किया जाता है।

यूटीसी समय के साथ इसका उपयोग करने का अर्थ नहीं है (क्योंकि यह हमेशा 0 है)। यही कारण है कि आपको चेतावनी मिलती है (इस टिप्पणी के लिए @ हंसपैसेंट का धन्यवाद)।

आप या तो:

var dtString = DateTime.Now.ToString(@"yyyy-MM-ddTHH\:mm\:ss.f zzz"); 

या UTC समय और स्थानीय समय प्रिंट करना चाहते हैं:

स्थानीय समय और UTC से ऑफसेट (जो मानक है) मुद्रित करने के लिए करना चाहते हैं क्षेत्र (जो वास्तव आम नहीं है):

var dtString = DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.f") + " " + DateTime.Now.ToString(@"zzz"); 

कम या ज्यादा क्षेत्रों में काम है कौन सा अपने कोड में ivalent (के रूप में @JeroenMostert link में विस्तार से बताया):

var dtString = DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fzzz"); 

लेकिन जिसके परिणामस्वरूप स्ट्रिंग सभी पर नहीं मानक है और अशुद्ध अर्थ के लिए सीसा।

"2015-02-18T12:08:15.1 +01:00" 

स्थानीय समय और स्थानीय समय क्षेत्र नहीं UTC समय और स्थानीय समय क्षेत्र के रूप में पढ़ा है। TimeZone.CurrentTimeZone Property

-1

पूरा संदेश पाठ शायद आपके प्रश्न का उत्तर देगा:

यह जब 'z' प्रारूप विनिर्देशक है, जो एक स्थानीय समय क्षेत्र उत्पादन में ऑफसेट शामिल होंगे का उपयोग कर DateTime.ToString बुला हो सकता है। उस स्थिति में, या तो 'Z' प्रारूप विनिर्देशक का उपयोग करें, जो यूटीसी समय निर्दिष्ट करता है, या 'ओ' प्रारूप स्ट्रिंग का उपयोग करता है, जो पाठ में डेटटाइम जारी रखने के लिए अनुशंसित तरीका है।

आपकी प्रारूप स्ट्रिंग में z निर्दिष्ट "yyyy-MM-ddTHH\:mm\:ss.fzzz" शामिल है। इसे "yyyy-MM-ddTHH\:mm\:ss.fZZZ" पर बदलने का प्रयास करें।

+3

वह स्ट्रिंग में केवल "ZZZ" उत्पन्न करेगा। संदेश थोड़ा भ्रामक है; "जेड" वास्तव में एक प्रारूप विनिर्देशक नहीं है, लेकिन अंत में एक "जेड" (जिसे अपरिवर्तित के माध्यम से पारित किया जाता है) एक यूटीसी समय निर्दिष्ट करता है। –