Arduino:
Сравнение двух дат

Как:

В Arduino вы можете сравнивать даты, используя библиотеку TimeLib.h. Сначала установите ее. Затем ознакомьтесь с этим фрагментом:

#include <TimeLib.h>

void setup() {
  Serial.begin(9600);
  // Задаем два разных времени (год, месяц, день, час, минута, секунда)
  // Здесь мы устанавливаем 3 марта 2023 года, 8:30:00 и 4 марта 2023 года, 16:45:00
  time_t firstTime = makeTime({0, 30, 8, 3, 3, 2023});
  time_t secondTime = makeTime({0, 45, 16, 4, 3, 2023});
  
  // Сравниваем два времени
  if (firstTime < secondTime) {
    Serial.print("Первое время раньше.");
  } else if (firstTime > secondTime) {
    Serial.print("Второе время раньше.");
  } else {
    Serial.print("Оба времени одинаковые.");
  }
}

void loop() {
  // Здесь ничего нет
}

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

Первое время раньше.

Глубже

В Arduino нет встроенной поддержки даты и времени, поэтому мы используем такие библиотеки, как TimeLib.h. До появления библиотек людям приходилось вручную вычислять и сравнивать даты — сложная задача из-за високосных годов, разной длительности месяцев и т. д.

Другие способы работы с датами включают модули RTC (Real Time Clock), такие как DS3231, которые сохраняют время даже когда Arduino выключен. Для сравнения вам все равно придется загружать даты в программу и сравнивать их так же, как мы сделали выше.

При реализации учитывайте часовые пояса и переход на летнее время, если это необходимо. TimeLib может работать с временем UTC, что обходит эти вопросы, но для местного времени требуется особое внимание.

См. Также