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

Publicado por Paulo Marcos Trentin 13/06/2008

[ Hits: 36.926 ]

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
paulo@paulotrentin.com.br
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

separando pares de impares e colocando em pilhas

Pilha Sequencial

Classificação de triângulos

Parte 7 - Sessão de estudo sobre VETORES

jhr boletim v1.0


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts