2017-11-02 14 views
5

किया:पैटर्न "YYYY-MM-yyyy HH: mm: ss Z" अपवाद पार्स करने का कारण बनता है जहां Jodatime मैं निम्न स्वरूप में <code>Strings</code> से पार्स <code>ZonedDateTime</code> रों कोशिश कर रहा हूँ नहीं

2017-08-10 16:48:37 -0500

मैं पहले किया था तो जोडाटाइम DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss Z") का सफलतापूर्वक उपयोग कर रहा है।

मैं जावा टाइम एपीआई के साथ जोडाटाइम को प्रतिस्थापित करने की कोशिश कर रहा हूं, और वही पैटर्न अब काम नहीं करता है।

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("YYYY-MM-dd HH:mm:ss Z"); 
ZonedDateTime.parse("2017-08-10 16:48:37 -0500", dtf); 

परिणाम निम्न अपवाद में:

java.time.format.DateTimeParseException: Text '2017-08-10 16:48:37 -0500' could not be parsed: Unable to obtain ZonedDateTime from TemporalAccessor: {DayOfMonth=10, OffsetSeconds=-18000, WeekBasedYear[WeekFields[SUNDAY,1]]=2017, MonthOfYear=8},ISO resolved to 16:48:37 of type java.time.format.Parsed 

जावा समय एपीआई में प्रारूप स्ट्रिंग के लिए उपयोग करने के लिए उचित पैटर्न क्या है?

उत्तर

6

आप uuuu

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss Z"); 
    ZonedDateTime parsed = ZonedDateTime.parse("2017-08-10 16:48:37 -0500", dtf); 
+2

दिलचस्प के साथ अपने YYYY हिस्सा है, वास्तव में क्या 'year' (YYYY) और' साल के- era' (uuuu) के बीच अंतर है बदलना चाहिए? –

+0

मैं इसे अपने आप को समझा नहीं सकता। लेकिन ध्यान दें कि: * u वर्ष * y वर्ष-दर-युग * वाई सप्ताह-आधारित-वर्ष https://docs.oracle.com/javase/8/docs/api/java/time/format/ DateTimeFormatter.html –

+2

** वाई ** = वर्ष, ** वाई ** = सप्ताह का वर्ष। यदि कोई ** सप्ताह संख्या ** (1-53) का उपयोग करता है, तो इस वर्ष के पहले सप्ताह के सप्ताह 2017 52 हो सकते हैं जबकि इसका ** सप्ताह का वर्ष ** 2016 तक रहा होगा। –

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