Conhecendo o Timestamp

O que é o horário conhecido como “epoch”?

Epoch Unix (Unix time, POSIX time ou timestamp) é o número de segundos que se passaram desde 01 de janeiro de 1970 (meia-noite UTC/GMT), não contando os segundos bissextos (em ISO 8601: 1970-01-01T00:00:00Z). Literalmente falando, o epoch é a estaca 0 no horário do Unix (meia-noite 1970/01/01), mas “epoch” é frequentemente utilizado como sinônimo de “Unix time”. Muitos sistemas Unix armazenam o epoch como um inteiro assinado de 32 bits, o que pode causar problemas em 19 janeiro de 2038 (conhecido como o problema do ano 2038 ou Y2038).

Abaixo estou colocando uma tabela com exemplos:

Horário legível Segundos
1 minuto 60 segundos
1 hora 3600 segundos
1 dia 86400 segundos
1 semana 604800 segundos
1 mês (30.44 dias) 2629743 segundos
1 ano (365.24 dias) 31556926 segundos

Todas as linguagens de programação oferecem uma forma de realizar a transformação timestamp <> horário legível. Abaixo segue alguns dos exemplos que eu mais utilizo:

Pegando o time Timestamp:
Perl time
PHP time()
Unix/Linux Shell date +%s
Python import time first, then time.time()
Java long epoch = System.currentTimeMillis()/1000;
MySQL SELECT unix_timestamp(now())
PostgreSQL SELECT extract(epoch FROM now());

Convetendo de horário legível para Timestamp
Unix/Linux Shell date +%s -ud”Jan 1, 1980 00:00:01″
PHP mktime(hour, minute, second, month, day, year)
Python import time first, then int(time.mktime(time.strptime(‘2000-01-01 12:34:00’, ‘%Y-%m-%d %H:%M:%S’))) – time.timezone
Java long epoch = new java.text.SimpleDateFormat (“dd/MM/yyyy HH:mm:ss”).parse(“01/01/1970 01:00:00”);
PostgreSQL SELECT extract(epoch FROM date(‘2010-10-27 14:42’));
MySQL SELECT unix_timestamp(time)Time format: YYYY-MM-DD HH:MM:SS

Convertendo de Timestamp para horário legível
Unix/Linux Shell date -ud @1190000000
PHP date(output format, epoch);
Python import time first, then time.strftime(“%a, %d %b %Y %H:%M:%S +0000”, time.localtime(epoch))
Java String date = new java.text.SimpleDateFormat(“dd/MM/yyyy HH:mm:ss”).format(new java.util.Date (epoch*1000));
MySQL from_unixtime(epoch, optional output format)
PostgreSQL PostgreSQL version 8.1 and higher: SELECT to_timestamp(epoch); Older versions: SELECT TIMESTAMP WITH TIME ZONE ‘epoch’ + epoch * INTERVAL ‘1 second’;

Bom, aquele monte de números juntos, onde cada segundo passado ele aumenta, que parece um bicho de sete cabeças, não é nada além do Timestamp.

Esse post foi publicado em Artigos e marcado , . Guardar link permanente.

Deixe um comentário