Shell: Converter datas de e para Unix timestamp

Palavras-chave: shell, datas, date, awk, unix timestamp, posix time, unix time, unix epoch

Maneiras rápidas de converter de Unix timestamp para um formato mais amigável:

GNU date
date -d '1/1/1970 + 1158857787 seconds'
date -d '1/1/1970 + 1158857787 seconds' '+%d/%m/%Y %H:%M:%S %z'
BSD date
date -r 1158857787
GNU Awk
echo 1158857787 | awk '{print strftime("%c",$1)}'
awk 'BEGIN {print strftime("%c",1158857787)}'
awk 'BEGIN {print strftime("%d/%m/%Y %H:%M:%S %z",1158857787)}'

Para fazer o caminho inverso, a partir de uma data gerar o Unix timestamp:

GNU e BSD date
date +%s   # unix timestamp de agora
GNU date
date -d '09/21/2006 13:56:27' +%s   # de uma data específica
GNU Awk
awk 'BEGIN {print mktime("2006 09 21 13 56 27")}'

Observação: Você pode ter diferença de algumas horas dependendo do seu timezone.

This entry was posted in Shell. Bookmark the permalink.

4 Responses to Shell: Converter datas de e para Unix timestamp

  1. AndreMartin says:

    Nenhum desses comandos funcionou no Solaris…
    o date não possui esta opção,
    o awk e nawk nao reconhecem mktime nem strftime
    o gawk não é distribuído por default.
    Haveria alguma outra alternativa, para solaris? Acho que com Perl tem uma opção, que poderia ser incluída nesta lista útil.
    Obrigado.

  2. Gutobat says:

    Tem outro jeito:

    date -d @1274206474 +%c

    Abraço!

  3. isaac says:

    O que você está sugerindo são os comandos para tal, que dependem da linguagem utilizada. O legal é construir um algoritmo que funciona para qualquer linguagem e ambiente.
    O que deve ser feito é criar algumas tabelas com o número de segundos acumulados
    por ano desde 1970, outra por mês, por dia, por hora.
    O valor inteiro deve ser pesquisado na tabela e estará entre 2 deles – achou o ano – é o menor.
    Faz-se a diferença entre o informado e o encontrado e continua-se a pesquisa nas diversas tabelas, formatando a data até o final.
    Eu fiz e funciona!
    Abraços.

    • Bruno Vescovi says:

      Se você fez, e funciona, então pode disponibilizar o seu script?

      Um abraço.

Leave a Reply

Your email address will not be published. Required fields are marked *