Função em C, retorna a data do sistema já formatada

Publicado por Paulo Marcos Trentin 13/06/2008

[ Hits: 35.546 ]

Homepage: http://www.paulotrentin.com.br

Download date_time.c




Esses dias, num programa com banco de dados, precisei registrar a hora e data exata que um usuário executou determinada tarefa e para isso eu queria que a hora ficasse no formato hh:mm:ss e a data dd/MM/yyyy.

Foi com esse script que resolvi meu problema.

Espero que seja útil.

  



Esconder código-fonte

/*
Script feito por Paulo Marcos Trentin
[email protected]
http://www.paulotrentin.com.br

Esse script pega a hora e a data do sistema e as formata para exibir 
no respectivo formato hh:mm:ss e dd/MM/yyyy

Sou novato em programacao, especialmente na linguagem C,
mais foi dessa a forma que consegui obter a data e a
hora do sistema, formatada, para inseri-las no banco de dados mysql.

Dicas e criticas sao bem vindas.
*/

#include <stdio.h>
#include <time.h>

// funcao format. Ela recebe um valor do tipo inteiro e caso este seja menor que 10
// ela inclui o 0 na frente. ex.: 1 antes 01 depois
// for fim retorna um ponteiro para uma variavel do tipo char com o valor da conversao
char *format(int number){      
   char    *retorno,
      ret[100];
   int    i;

   if (number < 10){
      sprintf(ret,"0%d",number);
      retorno = ret;
      return retorno;
   }
   else{
      sprintf(ret,"%d",number);
      retorno = ret;
      return retorno;
   }
}      

// funcao que retorna data
char *data(void){

   int dia,mes,ano;
   char   var1[100],
      var2[100],
      var3[100],
      var4[100],
      *dataPtr;
   struct tm *local;
   time_t t;

   t = time(NULL);
   local = localtime(&t);

   dia = local -> tm_mday;
   mes = local -> tm_mon + 1;
   ano = local -> tm_year + 1900;

   // por algum motivo precisa converter os valores retornados pelos ponteiros
   // da funcao em variaveis do tipo char      
   sprintf(var1,"%s",format(dia));
   sprintf(var2,"%s",format(mes));
   sprintf(var3,"%s",format(ano));

   // cria a variavel de retorno dos dados e cria um ponteiro para essa variavel      
   sprintf(var4,"%s/%s/%s",var1,var2,var3);

   // retorna data no formato dd:MM:yyyy com um ponteiro
   dataPtr = var4;
   return dataPtr;
}

// funcao que retorna hora
char *hora(void){
      
   int   hora,minuto,segundo;
   char   var1[100],
      var2[100],
      var3[100],
      var5[100],
      *retorno;
   struct tm *local;
   time_t t;

   t = time(NULL);
   local = localtime(&t);
      
   // obtem hora, minuto e segundo e os aloca em uma variavel do tipo inteiro
   hora   =   local -> tm_hour;
   minuto   =    local -> tm_min;
   segundo =   local -> tm_sec;
   
   // por algum motivo precisa converter os valores retornados pelos ponteiros
   // da funcao em variaveis do tipo char
   sprintf(var1,"%s",format(hora));
   sprintf(var2,"%s",format(minuto));
   sprintf(var3,"%s",format(segundo));
   
   // cria a variavel de retorno dos dados e cria um ponteiro para essa variavel
   sprintf(var5,"%s:%s:%s",var1,var2,var3);
   
   // retorna hora no formato hh:mm:ss com um ponteiro
   retorno = var5;
   return retorno;   
}

int main()
{
   char   data_sistema[100],
      hora_sistema[100];

   sprintf(data_sistema,"%s",data());
   sprintf(hora_sistema,"%s",hora());

   printf("%s\n",data_sistema);
   printf("%s\n",hora_sistema);

}

Scripts recomendados

Manipulação de BITS em C

Conta Bit em C

Faturamento

Strcat

Strlen (parte 2)


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário