hora (c)

Overblaze

Power Member
Boas a todos!
Gostaria de poder mostrar a hora de sistema no ecran... alguem sabe como se faz e que bibliotecas sao necessarias?
(uso o visual c++)

obrigado
 
Esse topico fala sobre data e id automatico ou algo do genero... o que eu queria era mesmo a hora do sistema.. ex: 7:12:32

obrigado
 
PHP:
#include <stdio.h>
#include <time.h>

int main (void) {

//O tempo em segundos desde 1 JAN 1970 00:00:00 ate este momento
printf ("%d\n", time((time_t*)NULL));

//Um apontador time_t com o mesmo tempo(uns milesimos de segundo adiantado, dependendo do processador)
time_t t = time((time_t*)NULL);

//Uma struct tm que ja existe da biblioteca do c
struct tm tempo;

/* Composicao da struct tm
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
}
*/

//Converter para uma struct tm, um time_t
tempo = *localtime_r(&t, &tempo);

//guardar para uma string um output desejado
char str[40];
strftime(str, (sizeof(char)*40),"DATA: \t%d-%m-%y \nHORA: \t%H:%M:%S",&tempo);

printf("%s\n", str);
return 0;
}

Dá uma olhada neste código que fiz, vindo desta Thread
Acho que deve fazer aquilo que queres.
Há maneiras mais simples de fazer, esse pedaço de código devolve o tempo num output desejado bem formatado, e com os parametros apenas desejados.
Faz 'man' as funções acima, e vê o comportamento delas.
Ver também -> Link

Cumps
 
Última edição:
O que esse prog faz e mostrar datas e tempos apartir de um ano ou algo assim...eu so quero fazer um printf (ou algo assim) da hora do sistema..ou seja...se forem 4 e 30 queria que aparece-se exactamente isso...

obrigado
 
PHP:
#include <stdio.h>
#include <time.h>

int main (void) {

//O tempo em segundos desde 1 JAN 1970 00:00:00 ate este momento
printf ("%d\n", time((time_t*)NULL));

//Um apontador time_t com o mesmo tempo(uns milesimos de segundo adiantado, dependendo do processador)
time_t t = time((time_t*)NULL);

//Uma struct tm que ja existe da biblioteca do c
struct tm tempo;

/* Composicao da struct tm
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
}
*/

//Converter para uma struct tm, um time_t
tempo = *localtime_r(&t, &tempo);

//guardar para uma string um output desejado
char str[40];
strftime(str, (sizeof(char)*40),"DATA: \t%d-%m-%y \nHORA: \t%H:%M:%S",&tempo);

printf("%s\n", str);
return 0;
}

Dá uma olhada neste código que fiz, vindo desta Thread
Acho que deve fazer aquilo que queres.
Há maneiras mais simples de fazer, esse pedaço de código devolve o tempo num output desejado bem formatado, e com os parametros apenas desejados.
Faz 'man' as funções acima, e vê o comportamento delas.
Ver também -> Link

Cumps

Eu fiz um update à Thread, mas provavelmente não deves ter lido o resto. Já que respondeste logo a seguir sem tentar perceber realmente o que as funções faziam.
Aquele stftime, é apenas um exemplo:
Em vez de:
Código:
//guardar para uma string um output desejado
char str[40];
strftime(str, (sizeof(char)*40),"DATA: \t%d-%m-%y \nHORA: \t%H:%M:%S",&tempo);

printf("%s\n", str);

Podes tentar
Código:
//guardar para uma string um output desejado
char str[40];
strftime(str, (sizeof(char)*40),"%H:%M:%S",&tempo);

printf("%s\n", str);

Já agora, o tempo em C, é sempre calculado a partir de "1 JAN 1970 00:00:00", segundo a primeira norma C, isto é, foi um standard pré-definido.
Se não servir, não posso fazer mais nada.
 
mais simples que isto não arranjas...digo eu...hora e minuto, cada um num inteiro...é isto que keres?

main()
{
time_t t = time((time_t*)NULL);
struct tm tempo;
tempo = *localtime(&t, &tempo);



printf ( "Horas: %d:%d\n\n",tempo.tm_hour,tempo.tm_min);


system("pause");

}
 
mais simples que isto não arranjas...digo eu...hora e minuto, cada um num inteiro...é isto que keres?

main()
{
time_t t = time((time_t*)NULL);
struct tm tempo;
tempo = *localtime(&t, &tempo);



printf ( "Horas: %d:%d\n\n",tempo.tm_hour,tempo.tm_min);


system("pause");

}

E se eu quiser que isto apareça no ecrã continuamente, de x em x tempo?
 
Código:
While(1){
printf ( "Horas: %d:%d\n\n",tempo.tm_hour,tempo.tm_min);

sleep(1);/*Atenção que onde está um é o nr de segundos em que a execução do programa fica parada nesta função, podes por o que precisares*/
}
 
Back
Topo