2015-04-15 17 views
5

Mam wzór ciąg dla formaterJak sformatować datę ze strefą czasową we wzorze wzoru w java.time?

yyyy-MM-dd HH:mm:ss Z 

Jak analizować java.util.Date używając tego wzoru?

Problem stanowi strefa czasowa już w tym wzorze.

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

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

Ten pozornie daje

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

Tutejsze rozwiązań oraz w innych miejscach nie ma strefę czasową w formacie smyczkowych i oferują rozwiązania jak:

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

Mogę jakoś analizować je ?

Odpowiedz

6

An Instant does not have the notion of year of era:

Obsługiwane pola są:

  • NANO_OF_SECOND
  • MICRO_OF_SECOND
  • MILLI_OF_SECOND
  • INSTANT_SECONDS

Można użyć ZonedDateTime Zamiast:

ZonedDateTime zdt = date.toInstant().atZone(ZoneOffset.UTC); 
String format = DateTimeFormatter.ofPattern(DATE_TIME_FORMAT).format(zdt); 
Powiązane problemy