Neste site voce vai encontrar tutoriais de software livre e tambem alguns para Windows, sistema de controles de frequência e usuários desenvolvidos em PHP e MySQL, diversão, muita coisa sobre pescarias com albuns de fotos e também as viagens que pude registrar até agora.

Especialista em Tecnologia da Informação

Funções em C ANSI

Consistência de Datas


ConsisteData(char *Data, char tipo)
{
   int dia, mes, ano;
   char str[4];
   str[2] = str[3] = '\0';
 
   switch(tipo)
   {
      case 'G' : /* Data gregoriana     */
         str[0] = Data[0]; str[1] = Data[1]; dia = atoi(str);
         str[0] = Data[2]; str[1] = Data[3]; mes = atoi(str);
         str[0] = Data[4]; str[1] = Data[5]; ano = atoi(str);
         if ((mes < 1) || (mes > 12)) return 0;
         if ((dia < 1) || (dia > 31)) return 0;
         if ((mes == 2) && (ano % 4 == 0) && (dia > 29)) return 0;
         if ((mes == 2) && (ano % 4 != 0) && (dia > 28)) return 0;
         if ((mes == 4 || mes == 6 || mes == 9 || mes == 11)
            && (dia > 30)) return 0;
         if (ano == 0) return 0;
         break;
      case 'J' : /* Data juliana        */
         str[0] = Data[0]; str[1] = Data[1]; str[2] = '\0'; ano = atoi(str);
         str[0] = Data[2]; str[1] = Data[3]; str[2] = Data[4];
         dia = atoi(str);
         if (ano % 4 == 0)
         {
            if ((dia < 1) || (dia > 366))
               return 0;
         }
         else
            if ((dia < 1) || (dia > 365))
               return 0;
         if (ano == 0) return 0;
         break;
      default : return 0;
   }
   return 1;
}
 
 
ConsisteData1(char *Data, char tipo)
{
   int dia, mes, ano;
   char str[5];
   str[2] = str[3] = str[4] = '\0';
 
   switch(tipo)
   { 
      case 'G' : /* Data gregoriana     */
         str[0] = Data[0]; str[1] = Data[1]; dia = atoi(str);
         str[0] = Data[2]; str[1] = Data[3]; mes = atoi(str);
         str[0] = Data[4]; str[1] = Data[5];
         str[2] = Data[6]; str[3] = Data[7]; ano = atoi(str);
         if (   (mes < 1)
             || (mes > 12)
             || (dia < 1)
             || (dia > 31)
             || ((dia > 30) && (   mes == 2
                                || mes == 4
                                || mes == 6
                                || mes == 9
                                || mes == 11))
             || ((dia > 29) && (mes == 2))
             || (ano == 0)
             || ((dia > 28) && (mes == 2)
                 && (   (ano % 4 != 0)
                     || ((ano % 100 == 0) && (ano % 400 != 0))))
            ) return 0;
         break;
      case 'J' : /* Data juliana        */
         str[0] = Data[0]; str[1] = Data[1];
         str[2] = Data[2]; str[3] = Data[3]; str[4] = '\0'; ano = atoi(str);
         str[0] = Data[4]; str[1] = Data[5]; str[2] = Data[6];
         str[3] = '\0'; dia = atoi(str);
         if ((dia < 1)
             || (dia > 366)
             || (ano == 0)
             || (((ano % 4 != 0)
                  || (ano % 400 != 0))
                 && (dia > 365))
            ) return 0;
         if (ano == 0) return 0;
         break;
      default : return 0;
   }
   return 1;
}