]> git.earman.xyz Git - sensor-watch.git/commitdiff
Handle hour overflow
authorDaniel Bergman <danber@gmail.com>
Sat, 28 Jun 2025 16:28:57 +0000 (18:28 +0200)
committerDaniel Bergman <danber@gmail.com>
Sat, 28 Jun 2025 16:28:57 +0000 (18:28 +0200)
watch-faces/complication/sunrise_sunset_face.c

index d5e7a052f9074ffb4fa539e8d5d43b51cf1976f1..2caefa64aaa7a833e51e618ca228d73d7cf5c1eb 100644 (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;