Desvendando o comando DATE

Publicado por Rafael Brianezi da Silva em 24/06/2008

[ Hits: 229.689 ]

 


Desvendando o comando DATE



Este tutorial mostra alguns exemplos de como utilizar o comando date para:
  • Exibir a data/hora do Sistema;
  • Alterar a data/hora do Sistema;
  • Exibir a data/hora Formatada;
  • Efetuar cálculos com Data e Hora.

Alterando a Data e Hora do Sistema:

Toda vez que o sistema operacional Linux é inicializado, este busca no relógio da BIOS (também chamado de relógio de hardware) as configurações necessárias para configurar a data/hora do sistema. Ou seja, no Linux podemos ter a data/hora do sistema diferente da data/hora que temos no hardware, e essa informação é muito importante no momento de efetuar ajustes.

Pode-se ajustar sua data e hora conforme necessário, porém a mesma não será mantida até o próximo boot, quando o sistema fará uma nova requisição ao relógio do hardware para ajustar-se.

Se for executado apenas o comando date no shell do Linux será obtido um resultado com a seguinte formatação:

Qui Jun 19 21:37:16 BRT 2008

Para ajustar a data do sistema para o dia 14 de setembro de 2008 (meu aniversário rsrs :) ) poderia ser utilizado o seguinte comando:

Sintaxe: date mês/dia/ano

# date -s 09/14/2008

Após ajustar a data do sistema é importante sincronizá-la com a data do hardware, para isso use o seguinte comando na seqüência:

# hwclock -w

Dica: Para ajustar a data/hora do sistema e sincronizar com o hardware em um único comando é muito simples, basta seguir a seguinte sintaxe:

mm (mês 00-12)
dd (dia 00-31)
HH (hora 00-23)
MM (min 00-59)
YYYY (0000-9999)

date mmddHHMMYYYY

Exemplo 1: Ajustar a data para o dia 14 de setembro de 2008 e a hora para 18:30, por fim sincronizar com o relógio do hardware:

# date 091418302008 | hwclock -w

Exemplo 2: Ajustar a data para o dia 10 de agosto de 1987 e a hora para 07:50, por fim sincronizar com o relógio do hardware:

# date 081007501987 | hwclock -w

Parâmetros que podem ser utilizados para formatação de datas:
  • %A : dia da semana (domingo,..., sábado).
  • %B : nome do mês (janeiro,..., dezembro).
  • %H : hora do dia (0 a 23).
  • %M : minuto (0 a 59).
  • %S : segundos (0 a 61).
  • %T : hora no formato hh:mm:ss.
  • %Y : ano.
  • %a : dia da semana abreviado (dom,..., sab).
  • %b : nome do mês abreviado (jan,..., dez).
  • %c : dia da semana, data e hora.
  • %d : dia do mês (00-31).
  • %j : dia ano (1 a 366).
  • %m : mês (1 a 12).
  • %s : número de segundos desde das zero horas de 01/01/1970.
  • %w : dia da semana, onde 0 = domingo, 1 = segunda,..., 6 = sábado.
  • %x : representação da data local.
  • %y : os dois últimos dígitos do ano.
  • %r : formato de 12 horas completo (hh:mm:ss AM/PM)

Exemplos de formatações de data/hora com o comando date no shell:

Comando: # date
Saída: Qui Jun 19 22:40:28 BRT 2008

Comando: # date +%d/%m/%y
Saída: 19/06/08

Comando: # date +%d/%m/%Y
Saída: 19/06/2008

Comando: # date +%H:%M:%S
Saída: 22:45:24

Comando: # date "+%d %B %Y"
Saída: 19 junho 2008

Comando: # date "+%d %B %Y , %A"
Saída: 19 junho 2008 , quinta

Exemplos de cálculos com Data/Hora no Linux.

Qual a data de cinco dias atrás?

Comando: # date +%d%m%y -d "5 days ago"
Saída: 140608

Que dia e hora serão, se adicionarmos 45 horas na hora atual?

Comando: # date --date "45 hours"
Saída: Sáb Jun 21 20:02:38 BRT 2008

Que dia será daqui duas semanas?

Comando: # date -d "2 week"
Saída: Qui Jul 3 23:22:25 BRT 2008

Que dia será daqui a 5 meses e 2 dia?

Comando: # date -d "5 month 2 day"
Saída: Sáb Nov 22 00:37:53 BRST 2008

Outro exemplos:

# date
Qui Jun 19 23:56:28 BRT 2008

# date --date=now
Qui Jun 19 23:56:28 BRT 2008

# date --date=today # Mesma Coisa
Qui Jun 19 23:56:28 BRT 2008

# date --date='3 seconds'
Qui Jun 19 23:56:31 BRT 2008

# date --date='3 seconds ago'
Qui Jun 19 23:56:25 BRT 2008

# date --date='4 hours'
Sex Jun 20 03:56:28 BRT 2008

# date --date='tomorrow'
Sex Jun 20 23:56:28 BRT 2008

# date --date='1 day'
Sex Jun 20 23:56:28 BRT 2008

# date --date='1 days'
Sex Jun 20 23:56:28 BRT 2008

# date --date='yesterday'
Qua Jun 18 23:56:28 BRT 2008

# date --date='1 day ago'
Qua Jun 18 23:56:28 BRT 2008

# date --date='1 days ago'
Qua Jun 18 23:56:28 BRT 2008

# date --date='1 week'
Qui Jun 26 23:56:28 BRT 2008

# date --date='1 fortnight'
Qui Jul 3 23:56:28 BRT 2008

# date --date='1 month'
Sáb Jul 19 23:56:28 BRT 2008

# date --date='1 year'
Sex Jun 19 23:56:28 BRT 2009

Outras dicas deste autor

Apt-get, yum, slapt-get, wget, ftp etc através de proxy autenticado

Solução para arquivos com ^M no final de cada linha

Como testar se o SpamAssassin (antispam) e o ClamAV (antivírus) estão funcionando

Instalando o IONCube Loader no Debian

Ubuntu - Destacando Aba Ativa no Gnome-Terminal (Parte 2)

Leitura recomendada

Declaração do Imposto 2013 (.deb)

Rode o Office online (Office Live Workspace) no Firefox, no Linux!

Arch Linux direto do pendrive ou CD de instalação sem precisar do archinstaller

Listen no Debian SID

Integração de autenticação Squid com NIS

  

Comentários
[1] Comentário enviado por xfabi0x em 01/07/2008 - 18:39h

Parabéns a dica é muito útil!!!!!

[2] Comentário enviado por minduim em 27/12/2008 - 15:43h

Rafael, vc pode ajudar com meu problema? Eu quero fazer uma comparação se a data atual for menor que a data demarcada manda uma mensagem, eu consegui comparar se a data for igual, mas não se a data for menor. Obs.: Teria que ser:

SE Data_Atual >= Data_Comparada
ENTAO Mensagem

Ex.:

data_atual=$(date "+%d/%m%y")
data_comparada=$(date "+26/12/2008")
if [ $data_atual = $data_comparada ]
then
echo "Deu Certo"
fi

[3] Comentário enviado por edjin em 24/03/2009 - 10:45h

Otimo sua iniciativa!!!!!

[4] Comentário enviado por ismavolk em 11/11/2011 - 11:21h

MUITO MUITO MAS MUUUITO bom o calculo com horas!
Estou fazendo um script para calcular horas trabalhadas e isso me ajudou muitíssimo.

Obrigado!!!

[5] Comentário enviado por Fellype em 14/03/2017 - 16:42h

Esta dica já tem quase 9 anos e continua atual e útil. Como não uso o comando date com frequência, sempre recorro a ela quando preciso.

[6] Comentário enviado por cizordj em 28/01/2019 - 08:50h

E se eu sincronizar a hora via NTP? A hora é gravada no hardware da BIOS ou só fica sincronizada durante a sessão?

<---------------------------------------------------------------->
O seu tempo é o único bem que você não recupera



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts