From 23f3f671fe795447c97d87a7e2c01fe2821c580b Mon Sep 17 00:00:00 2001 From: Arnd Date: Wed, 3 May 2023 07:14:36 -0400 Subject: [PATCH] Added correct handling of leap-years, #23 --- src/DS3231M.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/DS3231M.cpp b/src/DS3231M.cpp index 941ea4d..9d6676c 100644 --- a/src/DS3231M.cpp +++ b/src/DS3231M.cpp @@ -23,7 +23,8 @@ static uint16_t date2days(uint16_t y, uint8_t m, uint8_t d) { for (uint8_t i = 1; i < m; ++i) { days += pgm_read_byte(daysInMonth + i - 1); // Add number of days for each month } // for-next each month - if (m > 2 && y % 4 == 0) { + if (m > 2 && (((y % 4 == 0) && (y % 100 != 0)) || + (y % 400 == 0))) { ++days; // Deal with leap years } // if-then leap year return days + 365 * y + (y + 3) / 4 - 1; // Return computed value