diff --git a/modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/DateFormat.java b/modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/DateFormat.java index a2bafd47d89f1..76ad37bbe60b5 100644 --- a/modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/DateFormat.java +++ b/modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/DateFormat.java @@ -109,7 +109,7 @@ Function getFunction(String format, ZoneId zoneId, Locale // fill the rest of the date up with the parsed date if (accessor.isSupported(ChronoField.YEAR) == false && accessor.isSupported(ChronoField.YEAR_OF_ERA) == false - && accessor.isSupported(WeekFields.of(locale).weekOfWeekBasedYear()) == false) { + && accessor.isSupported(WeekFields.of(locale).weekBasedYear()) == false) { int year = LocalDate.now(ZoneOffset.UTC).getYear(); ZonedDateTime newTime = Instant.EPOCH.atZone(ZoneOffset.UTC).withYear(year); for (ChronoField field : FIELDS) { diff --git a/modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/DateFormatTests.java b/modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/DateFormatTests.java index 518ac20cec724..e68e2a79b5f6f 100644 --- a/modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/DateFormatTests.java +++ b/modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/DateFormatTests.java @@ -69,14 +69,22 @@ public void testParseJavaDefaultYear() { assertThat(dateTime.getYear(), is(year)); } - public void testParseWeekBased() { - String format = randomFrom("YYYY-ww"); + public void testParseWeekBasedYearAndWeek() { + String format = "YYYY-ww"; ZoneId timezone = DateUtils.of("Europe/Amsterdam"); Function javaFunction = DateFormat.Java.getFunction(format, timezone, Locale.ROOT); ZonedDateTime dateTime = javaFunction.apply("2020-33"); assertThat(dateTime, equalTo(ZonedDateTime.of(2020,8,10,0,0,0,0,timezone))); } + public void testParseWeekBasedYear() { + String format = "YYYY"; + ZoneId timezone = DateUtils.of("Europe/Amsterdam"); + Function javaFunction = DateFormat.Java.getFunction(format, timezone, Locale.ROOT); + ZonedDateTime dateTime = javaFunction.apply("2019"); + assertThat(dateTime, equalTo(ZonedDateTime.of(2018,12,31,0,0,0,0,timezone))); + } + public void testParseWeekBasedWithLocale() { String format = randomFrom("YYYY-ww"); ZoneId timezone = DateUtils.of("Europe/Amsterdam");