Função em C, retorna a data do sistema já formatada
Publicado por Paulo Marcos Trentin 13/06/2008
[ Hits: 36.964 ]
Homepage: http://www.paulotrentin.com.br
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.
/* 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); }
3025 -> 30 + 25 = 55 -> 55*55 = 3025
Estrutura de dados em C -> Fila Circular com operador módulo
Nenhum comentário foi encontrado.
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Novo problema! Erro durante a atualização! (7)
Linux Mint não conecta Wi-Fi sem fio (1)
Tenho um problama de quebra de pacote e não descobri como resolver [RE... (2)
driver do repositorio debian nao atende o requisito minimo (7)