OSDN Git Service

Fix incorrect leap year logic
authorNeil Fuller <nfuller@google.com>
Wed, 17 Apr 2019 07:48:23 +0000 (08:48 +0100)
committerNeil Fuller <nfuller@google.com>
Wed, 17 Apr 2019 07:50:49 +0000 (08:50 +0100)
Fixing an issue for 2100.

Bug: 28784177
Test: build only
Change-Id: I4579ba2d07b8157f368fd31df5396677156aeeb0

core/java/android/widget/DatePickerCalendarDelegate.java

index e40023d..46edf47 100755 (executable)
@@ -581,7 +581,7 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate {
         return DatePicker.class.getName();
     }
 
-    public static int getDaysInMonth(int month, int year) {
+    private static int getDaysInMonth(int month, int year) {
         switch (month) {
             case Calendar.JANUARY:
             case Calendar.MARCH:
@@ -597,7 +597,7 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate {
             case Calendar.NOVEMBER:
                 return 30;
             case Calendar.FEBRUARY:
-                return (year % 4 == 0) ? 29 : 28;
+                return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? 29 : 28;
             default:
                 throw new IllegalArgumentException("Invalid Month");
         }