From 9c9064cdb38f836535ce7c8eec8000a29514bef3 Mon Sep 17 00:00:00 2001 From: Jonathan Cook Date: Sun, 14 Jun 2020 10:44:59 +0200 Subject: [PATCH] BAEL-3912 - Java: Get week number from any date? --- .../weeknumber/WeekNumberUsingCalendar.java | 37 ----------- .../weeknumber/WeekNumberUsingLocalDate.java | 30 --------- .../weeknumber/GetWeekNumberUnitTest.java | 64 +++++++++++++++++++ .../WeekNumberUsingCalendarUnitTest.java | 48 -------------- .../WeekNumberUsingLocalDateUnitTest.java | 44 ------------- 5 files changed, 64 insertions(+), 159 deletions(-) delete mode 100644 core-java-modules/core-java-date-operations-2/src/main/java/com/baeldung/weeknumber/WeekNumberUsingCalendar.java delete mode 100644 core-java-modules/core-java-date-operations-2/src/main/java/com/baeldung/weeknumber/WeekNumberUsingLocalDate.java create mode 100644 core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/weeknumber/GetWeekNumberUnitTest.java delete mode 100644 core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/weeknumber/WeekNumberUsingCalendarUnitTest.java delete mode 100644 core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/weeknumber/WeekNumberUsingLocalDateUnitTest.java diff --git a/core-java-modules/core-java-date-operations-2/src/main/java/com/baeldung/weeknumber/WeekNumberUsingCalendar.java b/core-java-modules/core-java-date-operations-2/src/main/java/com/baeldung/weeknumber/WeekNumberUsingCalendar.java deleted file mode 100644 index 7f4a57d997..0000000000 --- a/core-java-modules/core-java-date-operations-2/src/main/java/com/baeldung/weeknumber/WeekNumberUsingCalendar.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.baeldung.weeknumber; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.Locale; - -public class WeekNumberUsingCalendar { - - public int getWeekNumberFrom(String dateString, String dateFormat, Locale locale) throws ParseException { - SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); - Date date = sdf.parse(dateString); - - Calendar calendar = Calendar.getInstance(locale); - calendar.setTime(date); - - return calendar.get(Calendar.WEEK_OF_YEAR); - } - - public int getWeekNumberFrom(int year, int month, int day, Locale locale) { - Calendar calendar = Calendar.getInstance(locale); - calendar.set(year, month, day); - - return calendar.get(Calendar.WEEK_OF_YEAR); - } - - public int getWeekNumberFrom(int year, int month, int day, int firstDayOfWeek, int minimalDaysInFirstWeek) { - Calendar calendar = Calendar.getInstance(); - calendar.setFirstDayOfWeek(firstDayOfWeek); - calendar.setMinimalDaysInFirstWeek(minimalDaysInFirstWeek); - calendar.set(year, month, day); - - return calendar.get(Calendar.WEEK_OF_YEAR); - } - -} diff --git a/core-java-modules/core-java-date-operations-2/src/main/java/com/baeldung/weeknumber/WeekNumberUsingLocalDate.java b/core-java-modules/core-java-date-operations-2/src/main/java/com/baeldung/weeknumber/WeekNumberUsingLocalDate.java deleted file mode 100644 index 86d60311a9..0000000000 --- a/core-java-modules/core-java-date-operations-2/src/main/java/com/baeldung/weeknumber/WeekNumberUsingLocalDate.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.weeknumber; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoField; -import java.time.temporal.WeekFields; -import java.util.Locale; - -public class WeekNumberUsingLocalDate { - - public Integer getWeekNumberUsingWeekFiedsFrom(String day, String dayFormat, Locale locale) { - LocalDate date = LocalDate.parse(day, DateTimeFormatter.ofPattern(dayFormat)); - - return date.get(WeekFields.of(locale) - .weekOfYear()); - } - - public Integer getWeekNumberUsingWeekFieldsFrom(int year, int month, int day, Locale locale) { - LocalDate date = LocalDate.of(year, month, day); - - return date.get(WeekFields.of(locale) - .weekOfYear()); - } - - public Integer getWeekNumberUsingChronoFieldFrom(int year, int month, int day) { - LocalDate date = LocalDate.of(year, month, day); - - return date.get(ChronoField.ALIGNED_WEEK_OF_YEAR); - } -} \ No newline at end of file diff --git a/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/weeknumber/GetWeekNumberUnitTest.java b/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/weeknumber/GetWeekNumberUnitTest.java new file mode 100644 index 0000000000..c94950da29 --- /dev/null +++ b/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/weeknumber/GetWeekNumberUnitTest.java @@ -0,0 +1,64 @@ +package com.baeldung.weeknumber; + +import static org.junit.Assert.assertEquals; + +import java.time.LocalDate; +import java.time.temporal.ChronoField; +import java.time.temporal.WeekFields; +import java.util.Calendar; +import java.util.Locale; + +import org.junit.Test; + +public class GetWeekNumberUnitTest { + + @Test + public void givenDateUsingFieldsAndLocaleItaly_whenGetWeekNumber_thenWeekIsReturnedCorrectly() { + Calendar calendar = Calendar.getInstance(Locale.ITALY); + calendar.set(2020, 10, 22); + + assertEquals(47, calendar.get(Calendar.WEEK_OF_YEAR)); + } + + @Test + public void givenDateUsingFieldsAndLocaleCanada_whenGetWeekNumber_thenWeekIsReturnedCorrectly() { + Calendar calendar = Calendar.getInstance(Locale.CANADA); + calendar.set(2020, 10, 22); + + assertEquals(48, calendar.get(Calendar.WEEK_OF_YEAR)); + } + + @Test + public void givenDateUsingFieldsAndLocaleItaly_whenChangingWeekCalcSettings_thenWeekIsReturnedCorrectly() { + Calendar calendar = Calendar.getInstance(); + calendar.setFirstDayOfWeek(Calendar.SUNDAY); + calendar.setMinimalDaysInFirstWeek(4); + calendar.set(2020, 2, 22); + + assertEquals(13, calendar.get(Calendar.WEEK_OF_YEAR)); + } + + @Test + public void givenDateUsingChronoFields_whenGetWeekNumber_thenWeekIsReturnedCorrectly() { + LocalDate date = LocalDate.of(2020, 3, 22); + + assertEquals(12, date.get(ChronoField.ALIGNED_WEEK_OF_YEAR)); + } + + @Test + public void givenDateUsingFieldsWithLocaleItaly_whenGetWeekNumber_thenWeekIsReturnedCorrectly() { + LocalDate date = LocalDate.of(2020, 3, 22); + + assertEquals(12, date.get(WeekFields.of(Locale.ITALY) + .weekOfYear())); + } + + @Test + public void givenDateUsingFieldsWithLocaleCanada_whenGetWeekNumber_thenWeekIsReturnedCorrectly() { + LocalDate date = LocalDate.of(2020, 3, 22); + + assertEquals(13, date.get(WeekFields.of(Locale.CANADA) + .weekOfYear())); + } + +} diff --git a/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/weeknumber/WeekNumberUsingCalendarUnitTest.java b/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/weeknumber/WeekNumberUsingCalendarUnitTest.java deleted file mode 100644 index 955f2e93a4..0000000000 --- a/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/weeknumber/WeekNumberUsingCalendarUnitTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.baeldung.weeknumber; - -import static org.junit.Assert.assertEquals; - -import java.text.ParseException; -import java.util.Calendar; -import java.util.Locale; - -import org.junit.Test; - -public class WeekNumberUsingCalendarUnitTest { - - @Test - public void givenDateFormatAndLocaleItaly_whenGetWeekNumber_thenWeekIsReturnedCorrectly() throws ParseException { - WeekNumberUsingCalendar calendar = new WeekNumberUsingCalendar(); - - assertEquals(12, calendar.getWeekNumberFrom("20200322", "yyyyMMdd", Locale.ITALY)); - } - - @Test - public void givenDateFormatAndLocaleCanada_whenGetWeekNumber_thenWeekIsReturnedCorrectly() throws ParseException { - WeekNumberUsingCalendar calendar = new WeekNumberUsingCalendar(); - - assertEquals(13, calendar.getWeekNumberFrom("20200322", "yyyyMMdd", Locale.CANADA)); - } - - @Test - public void givenDateUsingFieldsAndLocaleItaly_whenGetWeekNumber_thenWeekIsReturnedCorrectly() { - WeekNumberUsingCalendar calendar = new WeekNumberUsingCalendar(); - - assertEquals(12, calendar.getWeekNumberFrom(2020, 2, 22, Locale.ITALY)); - } - - @Test - public void givenDateUsingFieldsAndLocaleCanada_whenGetWeekNumber_thenWeekIsReturnedCorrectly() { - WeekNumberUsingCalendar calendar = new WeekNumberUsingCalendar(); - - assertEquals(13, calendar.getWeekNumberFrom(2020, 2, 22, Locale.CANADA)); - } - - @Test - public void givenDateUsingFieldsAndLocaleItaly_whenChangingWeekCalcSettings_thenWeekIsReturnedCorrectly() { - WeekNumberUsingCalendar calendar = new WeekNumberUsingCalendar(); - - assertEquals(13, calendar.getWeekNumberFrom(2020, 2, 22, Calendar.SUNDAY, 4)); - } - -} diff --git a/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/weeknumber/WeekNumberUsingLocalDateUnitTest.java b/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/weeknumber/WeekNumberUsingLocalDateUnitTest.java deleted file mode 100644 index 6c8f1469b2..0000000000 --- a/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/weeknumber/WeekNumberUsingLocalDateUnitTest.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.baeldung.weeknumber; - -import static org.junit.Assert.assertEquals; - -import java.util.Locale; - -import org.junit.Test; - -public class WeekNumberUsingLocalDateUnitTest { - @Test - public void givenDateFormatAndLocaleItaly_whenGetWeekNumber_thenWeekIsReturnedCorrectly() { - WeekNumberUsingLocalDate localDate = new WeekNumberUsingLocalDate(); - - assertEquals(Integer.valueOf(12), localDate.getWeekNumberUsingWeekFiedsFrom("20200322", "yyyyMMdd", Locale.ITALY)); - } - - @Test - public void givenDateFormatAndLocaleCanada_whenGetWeekNumber_thenWeekIsReturnedCorrectly() { - WeekNumberUsingLocalDate localDate = new WeekNumberUsingLocalDate(); - - assertEquals(Integer.valueOf(13), localDate.getWeekNumberUsingWeekFiedsFrom("20200322", "yyyyMMdd", Locale.CANADA)); - } - - @Test - public void givenDateUsingChronoFields_whenGetWeekNumber_thenWeekIsReturnedCorrectly() { - WeekNumberUsingLocalDate localDate = new WeekNumberUsingLocalDate(); - - assertEquals(Integer.valueOf(12), localDate.getWeekNumberUsingChronoFieldFrom(2020, 3, 22)); - } - - @Test - public void givenDateUsingFieldsWithLocaleItaly_whenGetWeekNumber_thenWeekIsReturnedCorrectly() { - WeekNumberUsingLocalDate localDate = new WeekNumberUsingLocalDate(); - - assertEquals(Integer.valueOf(12), localDate.getWeekNumberUsingWeekFieldsFrom(2020, 3, 22, Locale.ITALY)); - } - - @Test - public void givenDateUsingFieldsWithLocaleCanada_whenGetWeekNumber_thenWeekIsReturnedCorrectly() { - WeekNumberUsingLocalDate localDate = new WeekNumberUsingLocalDate(); - - assertEquals(Integer.valueOf(13), localDate.getWeekNumberUsingWeekFieldsFrom(2020, 3, 22, Locale.CANADA)); - } -}