Handle hour overflow

This commit is contained in:
Daniel Bergman 2025-06-28 18:28:57 +02:00
parent e711fd3e60
commit 741e25db0d

View File

@ -127,6 +127,15 @@ static void _sunrise_sunset_face_update(sunrise_sunset_state_t *state) {
if (seconds < 30) scratch_time.unit.minute = floor(minutes);
else scratch_time.unit.minute = ceil(minutes);
// Handle hour overflow from timezone conversion
while (scratch_time.unit.hour >= 24) {
scratch_time.unit.hour -= 24;
// Increment day (this will be handled by the date arithmetic)
uint32_t timestamp = watch_utility_date_time_to_unix_time(scratch_time, 0);
timestamp += 86400;
scratch_time = watch_utility_date_time_from_unix_time(timestamp, 0);
}
if (scratch_time.unit.minute == 60) {
scratch_time.unit.minute = 0;
scratch_time.unit.hour = (scratch_time.unit.hour + 1) % 24;
@ -157,6 +166,15 @@ static void _sunrise_sunset_face_update(sunrise_sunset_state_t *state) {
if (seconds < 30) scratch_time.unit.minute = floor(minutes);
else scratch_time.unit.minute = ceil(minutes);
// Handle hour overflow from timezone conversion
while (scratch_time.unit.hour >= 24) {
scratch_time.unit.hour -= 24;
// Increment day (this will be handled by the date arithmetic)
uint32_t timestamp = watch_utility_date_time_to_unix_time(scratch_time, 0);
timestamp += 86400;
scratch_time = watch_utility_date_time_from_unix_time(timestamp, 0);
}
if (scratch_time.unit.minute == 60) {
scratch_time.unit.minute = 0;
scratch_time.unit.hour = (scratch_time.unit.hour + 1) % 24;