Skip to content

Commit e6e3cf7

Browse files
authored
Merge pull request eugenp#8894 from nachoverdu/BAEL-3912
BAEL-3912: Changes done
2 parents dae02cc + 6672c07 commit e6e3cf7

4 files changed

Lines changed: 166 additions & 0 deletions

File tree

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.baeldung.weeknumber;
2+
3+
import java.text.ParseException;
4+
import java.text.SimpleDateFormat;
5+
import java.util.Calendar;
6+
import java.util.Date;
7+
import java.util.Locale;
8+
9+
public class WeekNumberUsingCalendar {
10+
11+
public int getWeekNumberFrom(String day, String dateFormat, Locale locale) throws ParseException {
12+
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
13+
14+
Calendar calendar = Calendar.getInstance(locale);
15+
Date date = sdf.parse(day);
16+
calendar.setTime(date);
17+
18+
return calendar.get(Calendar.WEEK_OF_YEAR);
19+
}
20+
21+
public int getWeekNumberFrom(int year, int month, int day, Locale locale) {
22+
Calendar calendar = Calendar.getInstance(locale);
23+
calendar.set(year, month, day);
24+
25+
return calendar.get(Calendar.WEEK_OF_YEAR);
26+
}
27+
28+
public int getWeekNumberFrom(int year, int month, int day, int firstDayOfWeek, int minimalDaysInFirstWeek, Locale locale) {
29+
Calendar calendar = Calendar.getInstance(locale);
30+
calendar.setFirstDayOfWeek(firstDayOfWeek);
31+
calendar.setMinimalDaysInFirstWeek(minimalDaysInFirstWeek);
32+
calendar.set(year, month, day);
33+
34+
return calendar.get(Calendar.WEEK_OF_YEAR);
35+
}
36+
37+
public static void main(String[] args) {
38+
WeekNumberUsingCalendar calendar = new WeekNumberUsingCalendar();
39+
System.out.println(calendar.getWeekNumberFrom(2020, 2, 22, Locale.CANADA));
40+
}
41+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.baeldung.weeknumber;
2+
3+
import java.time.LocalDate;
4+
import java.time.format.DateTimeFormatter;
5+
import java.time.temporal.ChronoField;
6+
import java.time.temporal.WeekFields;
7+
import java.util.Locale;
8+
9+
public class WeekNumberUsingLocalDate {
10+
11+
public Integer getWeekNumberUsingWeekFiedsFrom(String day, String dayFormat, Locale locale) {
12+
LocalDate date = LocalDate.parse(day, DateTimeFormatter.ofPattern(dayFormat));
13+
14+
return date.get(WeekFields.of(locale)
15+
.weekOfYear());
16+
}
17+
18+
public Integer getWeekNumberUsinWeekFieldsFrom(int year, int month, int day, Locale locale) {
19+
LocalDate date = LocalDate.of(year, month, day);
20+
21+
return date.get(WeekFields.of(locale)
22+
.weekOfYear());
23+
}
24+
25+
public Integer getWeekNumberUsingChronoFieldFrom(int year, int month, int day) {
26+
LocalDate date = LocalDate.of(year, month, day);
27+
28+
return date.get(ChronoField.ALIGNED_WEEK_OF_YEAR);
29+
}
30+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.baeldung.weeknumber;
2+
3+
import static org.junit.Assert.assertEquals;
4+
5+
import java.text.ParseException;
6+
import java.util.Calendar;
7+
import java.util.Locale;
8+
9+
import org.junit.Test;
10+
11+
public class WeekNumberUsingCalendarUnitTest {
12+
@Test
13+
public void givenDateInStringAndDateFormatUsingLocaleItaly_thenGettingWeekNumberUsingCalendarIsCorrectlyReturned() throws ParseException {
14+
WeekNumberUsingCalendar calendar = new WeekNumberUsingCalendar();
15+
16+
assertEquals(12, calendar.getWeekNumberFrom("20200322", "yyyyMMdd", Locale.ITALY));
17+
}
18+
19+
@Test
20+
public void givenDateInStringAndDateFormatUsingLocaleCanada_thenGettingWeekNumberUsingCalendarIsCorrectlyReturned() throws ParseException {
21+
WeekNumberUsingCalendar calendar = new WeekNumberUsingCalendar();
22+
23+
assertEquals(13, calendar.getWeekNumberFrom("20200322", "yyyyMMdd", Locale.CANADA));
24+
}
25+
26+
@Test
27+
public void givenDateInYearMonthDayNumbersLocaleItaly_thenGettingWeekNumberUsingCalendarIsCorrectlyReturned() {
28+
WeekNumberUsingCalendar calendar = new WeekNumberUsingCalendar();
29+
30+
assertEquals(12, calendar.getWeekNumberFrom(2020, 2, 22, Locale.ITALY));
31+
}
32+
33+
@Test
34+
public void givenDateInYearMonthDayNumbersLocaleItalyChangingWeekCalculationSettings_thenGettingWeekNumberUsingCalendarIsCorrectlyReturned() {
35+
WeekNumberUsingCalendar calendar = new WeekNumberUsingCalendar();
36+
37+
assertEquals(13, calendar.getWeekNumberFrom(2020, 2, 22, Calendar.SUNDAY, 4, Locale.ITALY));
38+
}
39+
40+
@Test
41+
public void givenDateInYearMonthDayNumbersLocaleCanada_thenGettingWeekNumberUsingCalendarIsCorrectlyReturned() {
42+
WeekNumberUsingCalendar calendar = new WeekNumberUsingCalendar();
43+
44+
assertEquals(13, calendar.getWeekNumberFrom(2020, 2, 22, Locale.CANADA));
45+
}
46+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.baeldung.weeknumber;
2+
3+
import static org.junit.Assert.assertEquals;
4+
5+
import java.util.Locale;
6+
7+
import org.junit.Test;
8+
9+
public class WeekNumberUsingLocalDateUnitTest {
10+
@Test
11+
public void givenDateInStringAndDateFormatUsingWeekFieldsWithLocaleItaly_thenGettingWeekNumberUsingLocalDateIsCorrectlyReturned() {
12+
WeekNumberUsingLocalDate localDate = new WeekNumberUsingLocalDate();
13+
14+
assertEquals(12, localDate.getWeekNumberUsingWeekFiedsFrom("20200322", "yyyyMMdd", Locale.ITALY)
15+
.longValue());
16+
}
17+
18+
@Test
19+
public void givenDateInStringAndDateFormatUsingWeekFieldsWithLocaleCanada_thenGettingWeekNumberUsingLocalDateIsCorrectlyReturned() {
20+
WeekNumberUsingLocalDate localDate = new WeekNumberUsingLocalDate();
21+
22+
assertEquals(13, localDate.getWeekNumberUsingWeekFiedsFrom("20200322", "yyyyMMdd", Locale.CANADA)
23+
.longValue());
24+
}
25+
26+
@Test
27+
public void givenDateInStringAndDateFormatUsingChronoFieds_thenGettingWeekNumberUsingLocalDateIsCorrectlyReturned() {
28+
WeekNumberUsingLocalDate localDate = new WeekNumberUsingLocalDate();
29+
30+
assertEquals(12, localDate.getWeekNumberUsingChronoFieldFrom(2020, 3, 22)
31+
.longValue());
32+
}
33+
34+
@Test
35+
public void givenDateInYearMonthDayNumbersUsingWeekFieldsWithLocaleItaly_thenGettingWeekNumberUsingLocalDateIsCorrectlyReturned() {
36+
WeekNumberUsingLocalDate localDate = new WeekNumberUsingLocalDate();
37+
38+
assertEquals(12, localDate.getWeekNumberUsinWeekFieldsFrom(2020, 3, 22, Locale.ITALY)
39+
.longValue());
40+
}
41+
42+
@Test
43+
public void givenDateInYearMonthDayNumbersUsingWeekFieldsWithLocaleCanada_thenGettingWeekNumberUsingLocalDateIsCorrectlyReturned() {
44+
WeekNumberUsingLocalDate localDate = new WeekNumberUsingLocalDate();
45+
46+
assertEquals(13, localDate.getWeekNumberUsinWeekFieldsFrom(2020, 3, 22, Locale.CANADA)
47+
.longValue());
48+
}
49+
}

0 commit comments

Comments
 (0)