Comando date no sistema operacional
Os computadores sempre usam, por base, a zona fuso horária 0, hora de Greenwich ou hora universal e exibem a data/hora conforme o fuso horário configurado na máquina.
Desta forma, para se saber qual é a hora local, a máquina faz uma operação entre o horário universal e o fuso local.
Exemplo 1:
- hora universal: 12:02:45
- fuso: -3:00
- hora local: 12:02:45 - 3:00 = 9:02:45
Exemplo 2:
- hora universal: 12:02:45
- fuso: +3:00
- hora local: 12:02:45 + 3:00 = 15:02:45
E o comando
date se apropria desta característica para tratar data/hora no sistema operacional.
Obs.: os exemplos deste artigo foram gerados durante o Horário Brasileiro de Verão, também designado como BRST (Brazilian Summer Time), cujo o valor é igual a '-2:00'.
Sem opções, exibe a data/hora local:
date
Tue Dec 6 14:32:31 BRST 2011
Com as opções '-u', '--utc', ou --universal, exibe a data/hora 0:
date -u
Tue Dec 6 16:49:19 UTC 2011
date --utc
Tue Dec 6 16:49:45 UTC 2011
date --universal
Tue Dec 6 16:49:40 UTC 2011
Para alterar a hora e data do sistema, a sintaxe apresentada na seção sintaxe 'date' [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]], representa:
- -u, -utc ou --universal : são equivalentes e representam o horário de Grenwich, zona fuso horária 0;
- MM : Mês com 2 dígitos;
- DD : Dia com 2 dígitos;
- hh : Hora com 2 dígitos;
- mm : Minutos com 2 dígitos;
- [CC] : Século com 2 dígitos;
- YY : Ano com 2 dígitos;
- [.ss] : Segundos com 2 dígitos;
Alterando a data/hora local:
date 120614322011.30
Tue Dec 6 14:32:30 BRST 2011
No exemplo foi usado '06/12/2011 às 14:32:30h':
date 120614322011
Tue Dec 6 14:32:00 BRST 2011
Normalmente, não preocupa-se com segundos, podendo alterar a data para 06/12/2011 às 14:32h, como no exemplo acima.
Alterando a data/hora universal:
date -u 120614322011.30
Tue Dec 6 14:32:30 UTC 2011
date --utc 120614322011.30
Tue Dec 6 14:32:30 UTC 2011
date --universal 120614322011.30
Tue Dec 6 14:32:30 UTC 2011
Obs.: Alterado com precisão em segundos
date -u 120614322011
Tue Dec 6 14:32:00 UTC 2011
date --utc 120614322011
Tue Dec 6 14:32:00 UTC 2011
date --universal 120614322011
Tue Dec 6 14:32:00 UTC 2011
Obs.: Alterado sem a precisão de segundos.
Formatar a exibição
As opções apresentadas na sessão controle de formatação, permitem modificar a forma de exibição da data/hora.
Formato definido pela RFC 822:
date --rfc-822 --date "sun oct 1 5:45:02PM"
Wed, 01 Oct 2003 17:45:02 -0300
Formato ISO-8601 definido na RFC-3339 internet recommended format:
date --iso-8601=seconds --date "sun oct 1 5:45:02PM"
2003-10-01T17:45:02-0300
date --iso-8601=minutes
2011-12-06T14:32-0200
Alteração da exibição padrão do Sistema Operacional:
date -s "11/20/2003 12:48:00"
Thu Nov 20 12:48:05 BRST 2003
Operações com data/hora:
date --date "now +1 months -5 days"
Sun Jan 1 13:20:45 BRST 2012
Apresentação de data/hora com exibição modificada:
date --date "2006-10-05 06:55:55 -5 hours -11 min -10 sec"
Thu Oct 5 09:44:45 BRT 2006
Segundos desde 1970-01-01 00:00:00 UTC para a data e hora atual:
date +%s
1323189344
Segundos desde 1970-01-01 00:00:00 UTC para datas específicas:
date --date "5/7/2009" +%s; # 7/mai/2009
1241665200
date --date "05 Jul 2009 08:41:50" +%s
1246794110
Formato de exibição completo:
date +%c
Tue 06 Dec 2011 03:10:40 PM BRST
Formato de exibição completo para data específica:
date --date "05 Jul 2009 08:41:50" +%c
Dom 05 Jul 2009 08:41:50 BRT
Formatos personalizados
date '+DATA: %m/%d/%y%nHORA: %H:%M:%S'
DATA: 12/06/11
HORA: 13:16:09
date --date "sun oct 1 5:45:02PM" +%FT%T%z
2003-10-01T17:45:02-0300
date +%FT%T%z
2011-12-06T14:43:00-0200
date +%F%t%T%z
2011-12-06T14:43:00-0200
date +%Y%m%d
20111206
date +%Y-%m-%d
2011-12-06
date +%Y/%m/%d
2011/12/06
date +%D
12/06/11
date +%D-%T
12/06/11-14:53:33
Referências
Atualizações deste artigo em:
brito.blog.incolume.com.br - Formatando exibição de datas em Linux