Tabajar con fechas

Hola a todos, estoy haciendo un programa para controlar un acuario y quiero añadirle un programador horario por fechas...
Esiste alguan función, libreria o algo para trabajar y poder sumar, y sobre todo comparar fechas facilmente, que es lo que mas me interesa?

Yo la progrmación horaria la meto en un array como este:

  int DatosTiempo [][11] = 
    {
    //Encendido                                          Apagado  
    //Año, Mes, Dia, Hora, Minutos,          Año, Mes, Dia, Hora, Minutos,      Salida  
    {   2014, 1, 20, 9 , 20,                            2014, 1, 20, 10, 40,                             0}
    };

Agradeceria vuestros consejos, muchas gracias.

Agua dulce o salada?

Ya se que la pregunta no tiene nada que ver, es por curiosidad, el mio es de agua salada :slight_smile:

Otra con mas sentido, para que quieres controlar fechas en un programador horario? Supongo que lo que pretendes es controlar horario de luces y cosas asi no?

Si es así, una idea, trabaja en minutos: las 12:45 son 12*60+45. Dos vectores con horarios de encendido y apagado y listo.

Hola, lo de acuario lo pongo por que todo el mundo sabe lo que es, en realidad quero montar un paludario o un terrario
depende de lo que me quiera ir complicar...

De momento tengo los cristales en una caja y todavia los tengo que pegar. Va a ser de 1m de largo por 45cm de profundidad y la altura no me acuerdo, creo que 60cm.

Respecto al tema del calendario, quiero controlar las fechas para ir reduciendo, las horas de luz diarias y la temperatura dependiendo de la fecha del año para poder ir preparando a los tritones para la invernación.

Lo de trabajar en minutos no esta mal. A ver si mañana a la tarde tengo tiempo y me pongo a ello...

Un saludo.

pacooca:
Hola, lo de acuario lo pongo por que todo el mundo sabe lo que es, en realidad quero montar un paludario o un terrario
depende de lo que me quiera ir complicar...

Te comprendo, busque en sangoogle para saber lo que era... :grin:

pacooca:
Respecto al tema del calendario, quiero controlar las fechas para ir reduciendo, las horas de luz diarias y la temperatura dependiendo de la fecha del año para poder ir preparando a los tritones para la invernación.

Una idea sencilla, si solo es un encendido y un apagado diario

un variable con el "minuto de encendido" y otra con "minuto de apagado" y otra con "correcion encendido" y "correccion apagado" y estas dos ultimas ir las variando en función del mes en el que estes.
Que te parece?

Hola, ahun no he tenido teimpo de analizar correctamente esta función, ya la analizare mañana pero me ha dado la impresión de que funciona bien.

He echo unas modificaciones en el array, ya no se define una hora de encendido y otra de apagado, si no que se analiza dato a dato y actua en consecuencia encendiendo y apagando salidas.

Un saludo.

//Control Horario
// -------------------------------------------------------------
void Temporizador ()
  {
    int x = sizeof(ProgTemporizador) / 14;
    
    //Año, Mes, Dia, Hora, Minutos, Estado, Salida  
    //{0, 0, 0, 10, 14, 1, 0},
    
    int UltimaAccion = 0;
    lcd.setCursor (0, 0);

    for (int i=0; i < x; i++)
      { 
        //Si no esta progrmado para que funione en una fecha en concreto (con numero 0 en el año, mes, dia), 
        //la fecha en la que tienen que actuar es la actual.
        if ((ProgTemporizador [i][0] == 0) && (ProgTemporizador [i][1] == 0) && (ProgTemporizador [i][2] == 0))
          {
            ProgTemporizador [i][0] = FechaActual[0][0];  //Guardamos la fecha Actual en las variables. Año
            ProgTemporizador [i][1] = FechaActual[0][1];  //Mes
            ProgTemporizador [i][2] = FechaActual[0][2];  //Dia
            
            ProgTemporizador [i][3] = HoraActual [0][0];  //Guardamos la hora actual en la variables. Hora
            ProgTemporizador [i][4] = HoraActual [0][1];  //Minutos
          }
          
        //Si esta progrmado para que funcione en unos meses en concreto (Si el año es 0 y estan rellemanodos)
        //Esto es util para crear ciclos de invernacion o reproduccion de los animales.
        if ((ProgTemporizador [i][0] == 0) && (ProgTemporizador [i][1] != 0) && (ProgTemporizador [i][2] != 0)) ProgTemporizador [i][0] = FechaActual[0][0];  //Guardamos la fecha Actual en las variables.
        
        //Enpieza el olgoritmo de control
        //Si la fecha del array es igual o mañor que la fecha actual continua el algoritmo. 
        if (((ProgTemporizador [i][0] <= FechaActual[0][0]) && (ProgTemporizador [i][1] <= FechaActual[0][1]) && (ProgTemporizador [i][2] <= FechaActual[0][2])) && (i > UltimaAccion)  && (((ProgTemporizador [i][3] <= HoraActual[0][0]) && (ProgTemporizador [i][4] <= HoraActual[0][1]))))
          {
            //Si tiene que activar una salida
            if (ProgTemporizador [i][5] == 1) 
              {
                UltimaAccion = i;
                
                ActivarSalida (ProgTemporizador [i][6]);
              }
              
            
            //Si tiene que des activar una salida
            if (ProgTemporizador [i][5] == 1)
              {
                UltimaAccion = i;
                
                DesActivarSalida (ProgTemporizador [i][6]);
              }
          }
          else
          {
            //Un error!!!
          }
      }
  }

yo tengo una iguanita y tambien tengo pensado hacerle su terrario.