Расчет даты в будущем или прошлом

Arduino:
Расчет даты в будущем или прошлом

Как:

Arduino не имеет встроенных функций даты и времени, но вы можете использовать библиотеку “TimeLib.h” для обработки расчетов даты. Убедитесь, что вы установили библиотеку перед использованием приведенных ниже примеров.

#include <TimeLib.h>

void setup() {
  Serial.begin(9600);
  setTime(10, 0, 0, 25, 3, 2023); // Установить время на 25 марта 2023 года, 10:00:00
}

void loop() {
  // Рассчитать 10 дней в будущем
  time_t futureTime = now() + 10 * SECS_PER_DAY;
  
  // Вывести будущую дату
  Serial.print(day(futureTime));
  Serial.print("/");
  Serial.print(month(futureTime));
  Serial.print("/");
  Serial.println(year(futureTime));

  // Рассчитать 10 дней в прошлом
  time_t pastTime = now() - 10 * SECS_PER_DAY;
  
  // Вывести прошлую дату
  Serial.print(day(pastTime));
  Serial.print("/");
  Serial.print(month(pastTime));
  Serial.print("/");
  Serial.println(year(pastTime));

  // Избежать постоянной печати
  delay(10000);
}

Пример вывода:

4/4/2023
15/3/2023

Подробнее

До появления модулей реального времени (RTC) и библиотек, таких как TimeLib, учет времени на Arduino был первобытным и обычно реализовывался вручную. Существуют различные способы вычисления будущих или прошлых дат, но использование специализированной библиотеки, как TimeLib, значительно упрощает процесс.

Альтернативы TimeLib включают более комплексную “RTClib.h” для использования с аппаратными RTC, или встроенную функцию millis() для более коротких временных интервалов (с ручным управлением датами). TimeLib обрабатывает високосные годы и часовые пояса, а также предоставляет утилиты для легкой манипуляции с датами.

При вычислении будущих или прошлых дат обратите внимание на часовые пояса и изменения связанные с переходом на летнее время, если вы работаете с реальными часами или внешними источниками времени. На Arduino, без RTC или подключения к Интернету, обычно время устанавливается вручную или через внешний сигнал (например, GPS или радиосигналы времени).

Смотри также