Berechnung eines zukünftigen oder vergangenen Datums

Arduino:
Berechnung eines zukünftigen oder vergangenen Datums

So geht’s:

#include <Wire.h>
#include <RTClib.h>

RTC_DS3231 rtc;

void setup() {
  Serial.begin(9600);
  if (!rtc.begin()) {
    Serial.println("RTC nicht gefunden!");
    while (1);
  }
  
  DateTime jetzt = rtc.now();
  DateTime zukunft = jetzt + TimeSpan(30,0,0,0); // 30 Tage in die Zukunft
  DateTime vergangenheit = jetzt - TimeSpan(5,0,0,0); // 5 Tage in die Vergangenheit

  // Zukunft
  Serial.print("Zukunft: ");
  Serial.print(zukunft.day());
  Serial.print(".");
  Serial.print(zukunft.month());
  Serial.print(".");
  Serial.println(zukunft.year());

  // Vergangenheit
  Serial.print("Vergangenheit: ");
  Serial.print(vergangenheit.day());
  Serial.print(".");
  Serial.print(vergangenheit.month());
  Serial.print(".");
  Serial.println(vergangenheit.year());
}

void loop() {
  // Nichts zu tun hier
}

Ausgabe könnte sein:

Zukunft: 28.4.2023
Vergangenheit: 23.3.2023

Tiefere Einblicke

In der Frühzeit der Programmierung waren Datum-Berechnungen kompliziert, man brauchte Algorithmen für jeden Kalendertyp. Heute vereinfachen Bibliotheken wie RTClib das Prozedere erheblich. Alternativ könnten Programmierer das Datum manuell berechnen, indem sie Sekunden zählen und Schaltjahre beachten, aber warum kompliziert, wenn es auch einfach geht? Die RTClib-Bibliothek benutzt Objekte, wie DateTime und TimeSpan, um Zeiträume zu repräsentieren und bequem zu handhaben.

Siehe auch