Converter Unix timestamp para formato legível

1. Converter Unix timestamp para formato legível

Andre Miguel
uberalles

(usa Suse)

Enviado em 29/04/2010 - 10:47h

Pessoal,
preciso de uma ajuda para fazer um programa em C que converta um numeral de 11 dígitos, daqueles que representam o número de segundos passados desde 01 de janeiro de 1970.

As bibliotecas disponíveis de tratamento de tempo não dão um tratamento muito adequado quando a entrada é nesse formato, mas disponibilizam saída assim. Curioso, não?

Podem me ajudar, galera? Estou dependendo disso para postar um código novo aqui de avaliação de desempenho.

Abraço.
.


  


2. Descobri como

Andre Miguel
uberalles

(usa Suse)

Enviado em 30/04/2010 - 16:43h

Acabei descobrindo como.

Quando postei essa pergunta, tinha pesquisado já bastante, e vi uma possível solução, mas envolvia outro tipo de estrutura de dados diferente da que estava usando. Isso envolvia a função ctime() da lib time.h

O 'man ctime' traz:
(...)
char *ctime(const time_t *clock);
(...)
DESCRIPTION
The ctime() function converts the time pointed to by clock,
representing the time in seconds since the Epoch (00:00:00
UTC, January 1, 1970), to local time in the form of a 26-
character string, as shown below. Time zone and daylight
savings corrections are made before string generation. The
fields are in constant width:

Essas manipulações envolviam a struct tm, e estava usando a timeb. Daí tentei algumas combinações malucas, mas sem sucesso.

Pouco depois de postar aqui, achei um link bacana:

http://www.programmingforums.org/post78846.html

Resumindo
ficou assim:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/timeb.h>
#include <sys/time.h>

char *legivel;

struct timeb tbi, tbf;

(void) ftime(&tbi);
(void) ftime(&tbf);

// ESSE É O MILAGRE
legivel=ctime(&tbi.time);

printf("%.19s.%hu %s", legivel, tbi.millitm, &legivel[20]);


que vai retornar:

Fri Apr 30 16:41:55.325 2010

Interessante, não?

Abraço.
.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts