2015-04-15 2 views
5

मैं एक फ़ॉर्मेटरjava.time में पैटर्न स्ट्रिंग में समय क्षेत्र के साथ तिथि को प्रारूपित करने के लिए कैसे करें?

yyyy-MM-dd HH:mm:ss Z 

कैसे एक java.util.Date इस पद्धति का उपयोग कर पार्स करने के लिए के लिए एक स्ट्रिंग पैटर्न है?

समस्या इस पैटर्न में पहले से ही समय क्षेत्र है।

String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss Z"; 

DateTimeFormatter.ofPattern(DATE_TIME_FORMAT).format(date.toInstant()); 

जाहिरा तौर पर

java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: YearOfEra 
    at java.time.Instant.getLong(Instant.java:603) 
    at java.time.format.DateTimePrintContext.getValue(DateTimePrintContext.java:298) 

यहाँ समाधान और अन्य स्थानों में देता है की तरह प्रारूप स्ट्रिंग और प्रस्ताव समाधान में समय क्षेत्र नहीं है:

DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.ofInstant(dateD.toInstant(), ZoneId.systemDefault())) 

मैं किसी भी तरह यह पार्स कर सकते हैं ?

उत्तर

6

एक Instant does not have the notion of year of era:

समर्थित क्षेत्रों हैं:

  • NANO_OF_SECOND
  • MICRO_OF_SECOND
  • MILLI_OF_SECOND
  • INSTANT_SECONDS

आप इसके बजाय किसी ZonedDateTime इस्तेमाल कर सकते हैं:

ZonedDateTime zdt = date.toInstant().atZone(ZoneOffset.UTC); 
String format = DateTimeFormatter.ofPattern(DATE_TIME_FORMAT).format(zdt); 
संबंधित मुद्दे