Arduino:
Comparando duas datas

Como fazer:

Aqui está um método simples usando a biblioteca TimeLib.h no Arduino:

#include <TimeLib.h>

void setup() {
  Serial.begin(9600);
  // Configura duas datas
  tmElements_t data1, data2;
  data1.Year = CalendarYrToTm(2023);
  data1.Month = 3;
  data1.Day = 14;
  data2.Year = CalendarYrToTm(2023);
  data2.Month = 3;
  data2.Day = 15;
  
  // Converte para tempo Unix
  time_t t1 = makeTime(data1);
  time_t t2 = makeTime(data2);
  
  // Compara e apresenta o resultado
  if(t1 == t2) {
    Serial.println("Datas iguais");
  } else if(t1 < t2) {
    Serial.println("Data 1 é anterior à Data 2");
  } else {
    Serial.println("Data 1 é posterior à Data 2");
  }
}

void loop() {
  // este exemplo não usa loop
}

Saída esperada:

Data 1 é anterior à Data 2

Mergulho Profundo

Históricamente, a comparação de datas é um problema clássico em programação, com desafios como anos bissextos e fusos horários. Alternativamente, sem uma biblioteca, programadores teriam de converter manualmente as datas para um formato comum antes da comparação, um processo propenso a erros. Na implementação, ao usar Arduino, se gerencia a complexidade das datas com bibliotecas robustas como TimeLib.h, que manipula operações de tempo sem a necessidade de reinventar a roda.

Veja Também