Partiendo de este codigo que encontre en el foro, he intentado pasar todos los dias, horas a minutos para sumarlos.
Tengo 72 años y solo es un reto personal como muchos codigos que a partir del foro he ido desarrollando.
Para enpezar en esta parte:
Serial.print(String(((month(H) - 1) * 30) * 1440) + " minutos en los 2 meses, "); //86400 minutos
no me da los minutos reales que tendrian que ser, da mucos menos.
En esta otra parte tampoco da los dias totales reales, puesto que el mes de febrero trae 28 dias y 29 si es bisiesto.
Serial.print( String(month(H) - 1 ) + " meses,");
Serial.println(String(day(H) - 1) + " dias," + String(hour(H)) + " horas, " + String(minute(H)) + " minutos");
Este es codigo que he usado:
#include <Time.h>
#include <TimeLib.h>
time_t T0, T1 ; // Contenedores de fechas
void setup()
{
Serial.begin(115200);
}//fin setup
void loop() {
T0 = SetFecha(2020, 12, 18, 9, 30, 0); //18/12/2020 09:30:00
printFecha(T0) ;
T1 = SetFecha(2021, 03, 01, 07, 0, 0); // 1/03/2021 7:00:00
printFecha(T1) ;
printFecha(T1 - T0);
Serial.println("--------------------------------------------------");
time_t H = T1 - T0 ;
Serial.print( String(month(H) - 1 ) + " meses,");
Serial.println(String(day(H) - 1) + " dias," + String(hour(H)) + " horas, " + String(minute(H)) + " minutos");
Serial.println("*************************************************");
Serial.println( String((month(H) - 1) * 30 ) + " dias en los meses, ");
Serial.print(String(((month(H) - 1) * 30) * 1440) + " minutos en los 2 meses, "); //86400 minutos
Serial.println(String((day(H) - 1) * 1440) + " minutos en los dias," + String((hour(H) * 60)) + " minutos en las horas, " + String(minute(H)) + " minutos");
Serial.println("---------------------------------------------------");
Serial.println( String((((month(H) - 1) * 30) * 1440 ) + ((day(H) - 1) * 1440) + (hour(H) * 60) + minute(H)));// no coincide
}//fin lood
void printFecha(time_t t)
{
Serial.print(day(t)) ; Serial.print(+ "/") ; Serial.print(month(t)); Serial.print(+ "/") ;
Serial.print(year(t)); Serial.print( " ") ;
Serial.print(hour(t)); Serial.print(+ ":") ; Serial.print(minute(t)); Serial.print(":") ;
Serial.println(second(t));
delay(1000);
}//fin printfecha
time_t SetFecha(int y, int m, int d, int h, int mi, int s )
{ tmElements_t Fecha ;
Fecha.Second = s;
Fecha.Minute = mi;
Fecha.Hour = h;
Fecha.Day = d ;
Fecha.Month = m ;
Fecha.Year = y - 1970 ;
return makeTime(Fecha);
}//fin setfecha
Podeis orientarme para poder pasar los dias reales, horas a minutos y poderlos sumar. Seguramente halla una manera mas simple de hacerlo.
Un saludo y perdon si pongo algo mal escrito o fuera de lugar.