Função em C, retorna a data do sistema já formatada
Publicado por Paulo Marcos Trentin 13/06/2008
[ Hits: 37.218 ]
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);
}
aritmed1.c - Aritmetica de Ponteiros
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático
Como impedir exclusão de arquivos por outros usuários no (Linux)
Formas seguras de instalar Debian Sid (7)
Alguém executou um rm e quase mata a Pixar! (5)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (12)
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (5)
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (6)









