Обчислення дати у майбутньому або минулому

Arduino:
Обчислення дати у майбутньому або минулому

Як це зробити:

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

RTC_DS1307 rtc; // Ініціалізація RTC модуля

void setup() {
  Serial.begin(9600);
  if (!rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (!rtc.isrunning()) {
    Serial.println("RTC is NOT running!");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Сетап часу і дати
  }
}

void loop() {
  DateTime now = rtc.now(); // Отримання поточної дати і часу

  Serial.print("Now: ");
  printDateTime(now);

  DateTime futureDate = now + TimeSpan(30,0,0,0); // Додавання 30 днів
  Serial.print("Future: ");
  printDateTime(futureDate);

  delay(10000);
}

void printDateTime(const DateTime& dt) {
  Serial.print(dt.year(), DEC);
  Serial.print('/');
  Serial.print(dt.month(), DEC);
  Serial.print('/');
  Serial.print(dt.day(), DEC);
  Serial.print(" ");
  Serial.print(dt.hour(), DEC);
  Serial.print(':');
  Serial.print(dt.minute(), DEC);
  Serial.print(':');
  Serial.print(dt.second(), DEC);
  Serial.println();
}

Вихідні дані:

Now: 2023/3/15 10:23:30
Future: 2023/4/14 10:23:30

Поглиблений огляд:

Обчислення дати в минулому чи майбутньому коріниться в потребі відслідковувати події та планувати наперед. У вбудованому програмуванні, як на Arduino, використовується модуль реального часу (RTC) для точного відслідковування часу. Існують альтернативи, як-от використання інтернет-сервісів часу або внутрішніх таймерів, але RTC дає високу точність та незалежність від зовнішніх з’єднань. Обчислення дати реалізується через вирахування або додавання часових проміжків до поточного моменту.

Додатково: