2015-04-15 14 views
5

Tôi có một mô hình chuỗi cho một định dạngCách định dạng Ngày có múi giờ trong chuỗi mẫu trong java.time?

yyyy-MM-dd HH:mm:ss Z 

Làm thế nào để phân tích một java.util.Date sử dụng mô hình này?

Sự cố là múi giờ đã có trong mẫu này.

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

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

này rõ ràng cho

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

Các giải pháp ở đây và ở những nơi khác không có múi giờ trong các giải pháp chuỗi định dạng và cung cấp như:

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

Tôi có thể bằng cách nào đó phân tích nó ?

Trả lời

6

Một Instant does not have the notion of year of era:

Các lĩnh vực được hỗ trợ là:

  • NANO_OF_SECOND
  • MICRO_OF_SECOND
  • MILLI_OF_SECOND
  • INSTANT_SECONDS

Bạn có thể sử dụng ZonedDateTime thay thế:

ZonedDateTime zdt = date.toInstant().atZone(ZoneOffset.UTC); 
String format = DateTimeFormatter.ofPattern(DATE_TIME_FORMAT).format(zdt); 
Các vấn đề liên quan