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: 44.758 ]

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

Clonagem de Hardware Hotline em Software Livre

Explorando o wget

CMS Plone 4.1.6 com invólucro Virtualenv + Buildout + Mount Point + BLOB Storage + Unicode UTF-8

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

Configurando proxy no shell

Leitura recomendada

Bugzilla (Bug Tracking System)

Mate Desktop no Slackware

Migração de Software Proprietário para Software Livre em Instituição Pública

KeePassXC - Gerenciador de Senhas de Código Aberto Voltado à Comunidade

Criando repositório oficial do Debian

  
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