-
Bug
-
Resolution: Not an Issue
-
P4
-
None
-
8u102
-
generic
-
generic
FULL PRODUCT VERSION :
C:\Users\Lappit>java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
C:\Users\Lappit>
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 10.0.10586]
A DESCRIPTION OF THE PROBLEM :
It is actually a prolem in java.time (not java.util) ...
When I try to get the week number (for Sweden) I get week number 0 instead of week number 53 for 1 January 2016. See below example:
======> Test code:
LocalDate date = LocalDate.now();
System.out.println("");
System.out.println("");
System.out.println("Date = " + date.toString());
System.out.println("Year = " + date.get(WeekFields.ISO.weekBasedYear()));
System.out.println("Week = " + date.get(WeekFields.ISO.weekOfYear()));
System.out.println("Day = " + date.get(WeekFields.ISO.dayOfWeek()));
date = LocalDate.of(2016, 01, 01);
System.out.println("");
System.out.println("");
System.out.println("Date = " + date.toString());
System.out.println("Year = " + date.get(WeekFields.ISO.weekBasedYear()));
System.out.println("Week = " + date.get(WeekFields.ISO.weekOfYear()));
System.out.println("Day = " + date.get(WeekFields.ISO.dayOfWeek()));
date = LocalDate.of(2015, 12, 31);
System.out.println("");
System.out.println("");
System.out.println("Date = " + date.toString());
System.out.println("Year = " + date.get(WeekFields.ISO.weekBasedYear()));
System.out.println("Week = " + date.get(WeekFields.ISO.weekOfYear()));
System.out.println("Day = " + date.get(WeekFields.ISO.dayOfWeek()));
======> Result:
Date = 2016-08-08
Year = 2016
Week = 32
Day = 1
Date = 2016-01-01
Year = 2015
Week = 0
Day = 5
Date = 2015-12-31
Year = 2015
Week = 53
Day = 4
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
I just ran the short code above.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I expected the result to be:
Date = 2016-08-08
Year = 2016
Week = 32
Day = 1
Date = 2016-01-01
Year = 2015
Week = 53
Day = 5
Date = 2015-12-31
Year = 2015
Week = 53
Day = 4
ACTUAL -
Receive the following result:
Date = 2016-08-08
Year = 2016
Week = 32
Day = 1
Date = 2016-01-01
Year = 2015
Week = 0
Day = 5
Date = 2015-12-31
Year = 2015
Week = 53
Day = 4
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Receive no errors
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class DateWeekTest {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
System.out.println("");
System.out.println("");
System.out.println("Date = " + date.toString());
System.out.println("Year = " + date.get(WeekFields.ISO.weekBasedYear()));
System.out.println("Week = " + date.get(WeekFields.ISO.weekOfYear()));
System.out.println("Day = " + date.get(WeekFields.ISO.dayOfWeek()));
date = LocalDate.of(2016, 01, 01);
System.out.println("");
System.out.println("");
System.out.println("Date = " + date.toString());
System.out.println("Year = " + date.get(WeekFields.ISO.weekBasedYear()));
System.out.println("Week = " + date.get(WeekFields.ISO.weekOfYear()));
System.out.println("Day = " + date.get(WeekFields.ISO.dayOfWeek()));
date = LocalDate.of(2015, 12, 31);
System.out.println("");
System.out.println("");
System.out.println("Date = " + date.toString());
System.out.println("Year = " + date.get(WeekFields.ISO.weekBasedYear()));
System.out.println("Week = " + date.get(WeekFields.ISO.weekOfYear()));
System.out.println("Day = " + date.get(WeekFields.ISO.dayOfWeek()));
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Just wanted to report the problem. I will do a minor workaround in my code, by checking the previous date in case of week 0.
C:\Users\Lappit>java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
C:\Users\Lappit>
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 10.0.10586]
A DESCRIPTION OF THE PROBLEM :
It is actually a prolem in java.time (not java.util) ...
When I try to get the week number (for Sweden) I get week number 0 instead of week number 53 for 1 January 2016. See below example:
======> Test code:
LocalDate date = LocalDate.now();
System.out.println("");
System.out.println("");
System.out.println("Date = " + date.toString());
System.out.println("Year = " + date.get(WeekFields.ISO.weekBasedYear()));
System.out.println("Week = " + date.get(WeekFields.ISO.weekOfYear()));
System.out.println("Day = " + date.get(WeekFields.ISO.dayOfWeek()));
date = LocalDate.of(2016, 01, 01);
System.out.println("");
System.out.println("");
System.out.println("Date = " + date.toString());
System.out.println("Year = " + date.get(WeekFields.ISO.weekBasedYear()));
System.out.println("Week = " + date.get(WeekFields.ISO.weekOfYear()));
System.out.println("Day = " + date.get(WeekFields.ISO.dayOfWeek()));
date = LocalDate.of(2015, 12, 31);
System.out.println("");
System.out.println("");
System.out.println("Date = " + date.toString());
System.out.println("Year = " + date.get(WeekFields.ISO.weekBasedYear()));
System.out.println("Week = " + date.get(WeekFields.ISO.weekOfYear()));
System.out.println("Day = " + date.get(WeekFields.ISO.dayOfWeek()));
======> Result:
Date = 2016-08-08
Year = 2016
Week = 32
Day = 1
Date = 2016-01-01
Year = 2015
Week = 0
Day = 5
Date = 2015-12-31
Year = 2015
Week = 53
Day = 4
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
I just ran the short code above.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I expected the result to be:
Date = 2016-08-08
Year = 2016
Week = 32
Day = 1
Date = 2016-01-01
Year = 2015
Week = 53
Day = 5
Date = 2015-12-31
Year = 2015
Week = 53
Day = 4
ACTUAL -
Receive the following result:
Date = 2016-08-08
Year = 2016
Week = 32
Day = 1
Date = 2016-01-01
Year = 2015
Week = 0
Day = 5
Date = 2015-12-31
Year = 2015
Week = 53
Day = 4
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Receive no errors
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class DateWeekTest {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
System.out.println("");
System.out.println("");
System.out.println("Date = " + date.toString());
System.out.println("Year = " + date.get(WeekFields.ISO.weekBasedYear()));
System.out.println("Week = " + date.get(WeekFields.ISO.weekOfYear()));
System.out.println("Day = " + date.get(WeekFields.ISO.dayOfWeek()));
date = LocalDate.of(2016, 01, 01);
System.out.println("");
System.out.println("");
System.out.println("Date = " + date.toString());
System.out.println("Year = " + date.get(WeekFields.ISO.weekBasedYear()));
System.out.println("Week = " + date.get(WeekFields.ISO.weekOfYear()));
System.out.println("Day = " + date.get(WeekFields.ISO.dayOfWeek()));
date = LocalDate.of(2015, 12, 31);
System.out.println("");
System.out.println("");
System.out.println("Date = " + date.toString());
System.out.println("Year = " + date.get(WeekFields.ISO.weekBasedYear()));
System.out.println("Week = " + date.get(WeekFields.ISO.weekOfYear()));
System.out.println("Day = " + date.get(WeekFields.ISO.dayOfWeek()));
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Just wanted to report the problem. I will do a minor workaround in my code, by checking the previous date in case of week 0.