Bueno llegue tarde, pero una forma fácil de trabajar con fecha es el tiempo unix y la misma librería da las herramientas .Por ejemplo si quisieras sumar 4 años de 365 a una fecha y obtener la fecha (inclusive los bisiestos) con formato "humano"
#include <Wire.h>
#include "RTClib.h"
void showDate(const char* txt, const DateTime& dt) {
Serial.print(txt);
Serial.print(' ');
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.print(" = ");
Serial.print(dt.unixtime());
Serial.print("s / ");
Serial.println();
}
void setup () {
Serial.begin(57600);
DateTime Hora1 (2021, 12, 27, 0, 0, 0);
showDate("hora",Hora1);
uint32_t b= 3600UL*24UL*1460UL;//4 años de 365 dias
uint32_t a =Hora1.unixtime()+ b;//
DateTime dias_despues ( a); // Fecha 3000 dias despues
showDate("1460 Dias despues", dias_despues);
}
void loop () { }