Este artigo é continuação do FORMATANDO EXIBIÇÃO DE DATAS EM LINUX
Epoch é uma convensão que adota os segundos desde 1970-01-01 00:00:00 UTC.
Isto quer diser que 1º jan 1970 as 0h 0' 0'', é o marco inicial de contagem.
$date -u --date='Jan 1 00:00:00 UTC 1970'
Então se for exibido o segundo zero, ou marco inicial, a data será 1ºjan1970 as 0h0'0''
$date -u --date='@0'
Qui Jan 1 00:00:00 UTC 1970
Note que pode-se adotar o mesmo procedimento para qualquer data:
$date -d 'Tue Dec 6 14:32:00 BRST 2011' +%s
1323189120
No exemplo, 6 de dezembro de 2011, no horário brasileiro de verão, equivale a 1323189120 segundos.
$date --date='@1345241746'
Sex Ago 17 19:15:46 BRT 2012
No exemplo acima, 1345241746 segundos, equivale a Sex Ago 17 19:15:46 BRT 2012.
$date --date='TZ="America/Los_Angeles" 09:00 next Fri'
Sex Ago 24 13:00:00 BRT 2012
$date --date='TZ="America/Sao_paulo" 09:00 next Fri'
Sex Ago 24 06:00:00 BRT 2012
$date --date='TZ="America/Sao_paulo" 09:00 today'
Sáb Ago 18 06:00:00 BRT 2012
ou
$ date --date='TZ="America/Sao_paulo" now'
Sáb Ago 18 10:23:26 BRT 2012
date --date='Sat Aug 18 13:27:50 2012'
Sáb Ago 18 13:27:50 BRT 2012
Lembrete: a conversão da data tem que ser no padrão norte-americano, 29 de outubro de 2012 seria tratado da seguinte forma:
date -d '10/29/2012 15:32:45'
Seg Out 29 15:32:45 BRST 2012
ou
date -d '10/29/2012 15:32:45' +%s
1351531965
Para manter a codificação em POSIX, executa-se assim:
LANG=C date --date='Sat Aug 18 13:27:50 2012'
Sat Aug 18 13:27:50 BRT 2012
ou
LANG=C date -d '10/29/2012 15:32:45'
Mon Oct 29 15:32:45 BRST 2012
ou
LANG=C date -d 'Oct 29 15:32:45 2012'
Mon Oct 29 15:32:45 BRST 2012
1345307270
ou
date -d 'Sat Aug 18 13:27:50 2012' +%s
1345307270
ou
date -d '8/18 13:27:50 2012' +%s
1345307270
Sáb Ago 18 13:27:50 BRT 2012
ou
LANG=C date -d '@1345307270'
Sat Aug 18 13:27:50 BRT 2012
http://brito.blog.incolume.com.br/2011/12/formatando-exibicao-de-datas-em-linux.html
Epoch é uma convensão que adota os segundos desde 1970-01-01 00:00:00 UTC.
Isto quer diser que 1º jan 1970 as 0h 0' 0'', é o marco inicial de contagem.
$date -u --date='Jan 1 00:00:00 UTC 1970'
Então se for exibido o segundo zero, ou marco inicial, a data será 1ºjan1970 as 0h0'0''
$date -u --date='@0'
Qui Jan 1 00:00:00 UTC 1970
Note que pode-se adotar o mesmo procedimento para qualquer data:
$date -d 'Tue Dec 6 14:32:00 BRST 2011' +%s
1323189120
No exemplo, 6 de dezembro de 2011, no horário brasileiro de verão, equivale a 1323189120 segundos.
$date --date='@1345241746'
Sex Ago 17 19:15:46 BRT 2012
No exemplo acima, 1345241746 segundos, equivale a Sex Ago 17 19:15:46 BRT 2012.
$date --date='TZ="America/Los_Angeles" 09:00 next Fri'
Sex Ago 24 13:00:00 BRT 2012
$date --date='TZ="America/Sao_paulo" 09:00 next Fri'
Sex Ago 24 06:00:00 BRT 2012
$date --date='TZ="America/Sao_paulo" 09:00 today'
Sáb Ago 18 06:00:00 BRT 2012
ou
$ date --date='TZ="America/Sao_paulo" now'
Sáb Ago 18 10:23:26 BRT 2012
date --date='Sat Aug 18 13:27:50 2012'
Sáb Ago 18 13:27:50 BRT 2012
Lembrete: a conversão da data tem que ser no padrão norte-americano, 29 de outubro de 2012 seria tratado da seguinte forma:
date -d '10/29/2012 15:32:45'
Seg Out 29 15:32:45 BRST 2012
ou
date -d '10/29/2012 15:32:45' +%s
1351531965
Para manter a codificação em POSIX, executa-se assim:
LANG=C date --date='Sat Aug 18 13:27:50 2012'
Sat Aug 18 13:27:50 BRT 2012
ou
LANG=C date -d '10/29/2012 15:32:45'
Mon Oct 29 15:32:45 BRST 2012
ou
LANG=C date -d 'Oct 29 15:32:45 2012'
Mon Oct 29 15:32:45 BRST 2012
Para converter o Timestamp em EPOCH
date --date='Aug 18 13:27:50 2012' +%s1345307270
ou
date -d 'Sat Aug 18 13:27:50 2012' +%s
1345307270
ou
date -d '8/18 13:27:50 2012' +%s
1345307270
Para converter o EPOCH em Timestamp
date -d '@1345307270'Sáb Ago 18 13:27:50 BRT 2012
ou
LANG=C date -d '@1345307270'
Sat Aug 18 13:27:50 BRT 2012
Referências
man datehttp://brito.blog.incolume.com.br/2011/12/formatando-exibicao-de-datas-em-linux.html
Comentários