Introdução
O comando date exibe ou configura a data e hora do sistema operacional linux. Além disto permite formatar a exibição do horário em diversos formatos, incluindo universal(utc), rfc-822, timestamp ou personalizado.
Sinopse
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Opções
- -d, --date=STRING — apresenta o horário descrito na STRING, não o atual;
- -f, --file=DATEFILE — similar ao --date, entretanto é apresentados as linhas individuais em do DATEFILE;
- -r, --reference=FILE — apresenta a ultima modificação de hora no referido arquivo FILE;
- -R, --rfc-822 — apresenta a data no formato RFC-822;
- -s, --set=STRING — configura o horário conforme a descrição em STRING;
- -u, --utc, --universal — apresenta ou configura a data/hora com o horário 0 (grenwich);
- --help — apresenta a ajuda do comando;
- --version — apresenta a versão do comando;
Controles de Formatação
Sequencias de interpretação para exibição:
- %% — Um literal %
- %a — Dia da semana abreviado (e.x., Dom)
- %A — Dia da semana completo (e.x., Quarta)
- %b — Mês abreviado (e.x., Jan)
- %B — Mês completo (e.x., Janeiro)
- %c — data e hora (e.x., Thu Mar 3 23:05:25 2005)
- %C — Século; como %Y, omitindo os 2 últimos dígitos (e.x., 20)
- %d — dia do mês (e.x, 01)
- %D — data; mesmo que %m/%d/%y
- %e — dia do mês, o mesmo que %_d
- %F — data completa; o mesmo que %Y-%m-%d
- %g — Ano com 2 dígitos;
- %G — Ano com 4 dígitos;
- %H — hora (00..23)
- %I — hora (01..12)
- %j — dia do ano (001..366)
- %k — hora ( 0..23)
- %l — hora ( 1..12)
- %m — Mês (01..12)
- %M — minuto (00..59)
- %n — nova linha
- %N — nanosecondos (000000000..999999999)
- %p — equivale a AM ou PM, para o formato de 12 horas; branco se desconhecido;
- %P — como o %p, mas em caixa baixa;
- %r — apresenta a hora no formato 12-horas (e.x., 11:11:04 PM)
- %R — 24-horas, senod hora e minutos; o mesmo que %H:%M
- %s — secondos desde 1970-01-01 00:00:00 UTC
- %S — secondos (00..60)
- %t — um tab
- %T — hora; o mesmo que %H:%M:%S;
- %u — dia da semana (1..7); 1 is Segunda e 7 Domingo;
- %U — semana do ano, com Domingo sendo o 1º dia da semana (00..53)
- %V — semana do ano, no formato ISO, sendo Segunda o 1º dia da semana (01..53)
- %w — dia da semana (0..6); 0 e Domingo;
- %W — semana do ano, com sendo Segunda o 1º dia da semana (00..53)
- %x — data formato en_US (e.x., 12/31/99)
- %X — hora formato 24h (e.g., 23:13:48)
- %y — Ano com 2 dígitos (00..99)
- %Y — Ano com 4 dígitos
- %z — +hhmm métrica da zona fuso horária (e.x., -0400)
- %:z — +hh:mm métrica formatada da zona fuso horária (e.x., -04:00)
- %::z — +hh:mm:ss métrica com precisão em segundos, da zona fuso horária (e.x., -04:00:00)
- %Z — Abreviação alfabética da zona fuso horária (e.x., BRST)
Comando date no Sistema Operacional
Os computadores sempre usam por base a zona fuso horária 0, ou hora de Grenwich, 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.
Observação: 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
, ou --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 digitos;
- DD — Dia com 2 digitos;
- hh — Hora com 2 digitos;
- mm — Minutos com 2 digitos;
- [CC] — Século com 2 digitos;
- YY — Ano com 2 digitos;
- [.ss] — Segundos com 2 digitos;
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 se 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
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
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 a 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
date --date "7/5/2009 7:04:59" +%c; 5/Jul/2009 Dom 05 Jul 2009 07:04:59 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 +%F 2011-12-06
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
Sequências
Comando date parte 2: Epoch x Unix Timestamp com o comando 'date' Referências
man date http://www.faqs.org/rfcs/rfc822.html http://www.faqs.org/rfcs/rfc3339.html http://www.computerhope.com/unix/udate.htm#03 http://www.unix.com/tips-tutorials/31944-simple-date-time-calulation-bash.html
Comentários