Formatando exibição de datas no Linux

As datas podem ser utilizadas para diversos fins, e manipulá-las de forma adequada pode ser a diferença para o trabalho bem feito.

[ Hits: 45.452 ]

Por: Ricardo Brito do Nascimento em 13/12/2011 | Blog: http://brito.blog.incolume.com.br


Execução e Exemplos



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
Página anterior    

Páginas do artigo
   1. Introdução, sinopse e opções
   2. Execução e Exemplos
Outros artigos deste autor

Conexão com chaves assimétricas sem uso de senha em servidor sshd

Configurando proxy no shell

Clonagem de Hardware Hotline em Software Livre

Vim com corretor ortográfico em pt_BR/es_ES/en_US

Gerenciando certificados A1 fornecidos pelo ICB-Brasil no navegador Chrome sobre Linux

Leitura recomendada

Zimbra 7.2 no CentOS

GNU Emacs, o primeiro GNU

Mantendo-se atualizado nas notícias com RSS

Prompt Bash avançado

Matando o rato

  
Comentários
[1] Comentário enviado por chroda em 13/12/2011 - 18:06h

o próprio bash oferece esta ajuda no helper

[2] Comentário enviado por albfneto em 15/12/2011 - 13:41h

Artigo interessante. favoritado.
pode mudar a data como quiser.

[3] Comentário enviado por ricardoolonca em 20/12/2011 - 07:40h

Muito útil na hora de criar scripts. Parabéns.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts