2015-12-30 4 views
0

Это код:Почему Java java.time.format.DateTimeFormatter # format (LocalDateTime) добавляет год?

LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(1451438792953L), ZoneId.of("UTC")); 
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("YYYY-MM-dd'T'HH:mm:ss.SSS'Z'"); 
String output = dateTimeFormatter.format(localDateTime); 

Это значение localDateTime:

2015-12-30T01:26:32.953 

Это значение output:

2016-12-30T01:26:32.953Z 

Почему добавить в год?

В java.time.temporal.WeekFields есть несколько способов с newYearWeek, которые увеличивают количество на год 1. Зачем?

Это странная ошибка.

+0

см. Здесь http://www.journaldev.com/2800/java-8-date-time-api-example-tutorial-localdate-instant-localdatetime-parse-and-format – Tauqir

ответ

2

От Wikipedia:

[YYYY] указывает на год неделе нумерации ISO, которая немного отличается от традиционного григорианский календарный год (см. Ниже)

  1. YYYY является ISO-8601 представление стиль года.
  2. yyyy - это григорианское представление о времени года.

Поскольку расчет двух может отличаться на +1 или -1, отсюда и форматирование. Более полезная информация на сайте YEAR_OF_ERA, YEAR и weekBasedYear.

Смежные вопросы