Datum und Zeit in eine Variable bringen um damit weiterzuarbeiten

Ich muss mich mal kurz mit einklinken, weil ich ein ganz ähnliches Problem habe.
Und zwar nehme ich Bilder in Intervallen mit der ESP32cam auf, die ich nach jedem Bild in den Tiefschlaf versetze.
Der Abruf vom Zeitserver klappt auch super, aber ich würde das Intervall verständlicherweise nachts etwas vergrössern, also ab 22:00 bis 05:00 reicht ein stündliches Bild aus.

int TIME_TO_SLEEP = 600;
  int th = timeinfo.tm_hour; // +2 nötig
  if (th > 19 or th < 3) { 
    TIME_TO_SLEEP = 3600;
  } else {
    TIME_TO_SLEEP = 600;
  }
  if (internet_connected == false) {
    TIME_TO_SLEEP = 1800;
  }

Also tagsüber klappt das auch mit den 10min (600) in der else Anweisung, aber die if Anweisung geht überhaupt nicht.
Ich kann es mir nicht erklären, aber es wird dann immer die 1800 ausgewählt (obwohl Verbindung vorhanden (auf Server gespeichert)) Wenn ich das weglasse, wird fast im Sekundentakt ein Bild aufgenommen. (Bis der Akku alle ist)
Also es geht ja jetzt irgendwie, aber ich würde es gerne verstehen.