De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Somando e Subtraindo Datas no Linux com o Comando date

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 17 de julho de 2026

Manipular datas é uma tarefa comum em scripts Shell. Felizmente, o comando date disponível na maioria das distribuições Linux oferece uma maneira simples e poderosa de realizar cálculos envolvendo dias, semanas, meses e anos, sem que seja necessário se preocupar com a duração dos meses, anos bissextos ou mudanças de ano.

Neste artigo veremos como utilizar esse recurso de forma prática.

Exibindo a data atual

O uso mais básico do comando date consiste em exibir a data e a hora atuais:

$ date
Sat Jul  4 10:30:15 -03 2026

Também é possível definir o formato da saída:

$ date +"%Y-%m-%d"
2026-07-04

Os principais códigos de formatação são:

Código Significado
%Y Ano com quatro dígitos
%m Mês (01–12)
%d Dia do mês (01–31)
%H Hora (00–23)
%M Minutos
%S Segundos
%F Equivale a %Y-%m-%d

Calculando datas futuras

O parâmetro -d permite informar uma data ou uma expressão relativa.

Para descobrir a data daqui a quinze dias:

$ date -d "+15 days"

Caso deseje apenas a data:

$ date -d "+15 days" +"%Y-%m-%d"
2026-07-19

Também é possível partir de uma data específica:

$ date -d "2026-07-04 +15 days" +"%Y-%m-%d"
2026-07-19

Subtraindo dias

Para voltar quinze dias:

$ date -d "-15 days" +"%Y-%m-%d"

Ou a partir de uma data determinada:

$ date -d "2026-07-04 -15 days" +"%Y-%m-%d"

Somando semanas, meses e anos

A mesma sintaxe funciona para outras unidades de tempo.

Uma semana:

$ date -d "+1 week"

Dois meses:

$ date -d "+2 months"

Um ano:

$ date -d "+1 year"

Também é possível combinar unidades:

$ date -d "+1 month +10 days"

Utilizando variáveis em scripts

Em scripts Shell normalmente a data encontra-se armazenada em uma variável.

data="2026-07-04"
nova_data=$(date -d "$DATA +15 days" +"%Y-%m-%d")
echo "$nova_data"

Também é possível definir o número de dias dinamicamente:

dias=15
data="2026-07-04"
date -d "$data +$dias days" +"%Y-%m-%d"

Não é preciso conhecer a duração dos meses

Uma das grandes vantagens do comando date é que ele realiza todos os cálculos de calendário automaticamente.

Por exemplo:

$ date -d "2026-01-20 +15 days"

Outro exemplo:

$ date -d "2026-12-20 +15 days"

Até mesmo anos bissextos são tratados corretamente:

$ date -d "2024-02-20 +15 days"

Não importa se o mês possui 28, 29, 30 ou 31 dias. O comando faz todos os ajustes automaticamente.

Calculando a partir da data atual

Uma situação muito comum consiste em calcular uma data futura a partir do dia corrente.

Daqui a trinta dias:

$ date -d "+30 days" +"%F"

Daqui a noventa dias:

$ date -d "+90 days" +"%F"

Há uma semana:

$ date -d "-7 days" +"%F"

Trabalhando com outros formatos de entrada

Se a data estiver no formato brasileiro (04/07/2026), ela pode ser convertida facilmente:

data="04/07/2026"
IFS=/ read dia mes ano <<< "$data"
date -d "$ano-$mes-$dia +15 days" +"%d/%m/%Y"

Compatibilidade

A opção -d faz parte do GNU date, presente praticamente em todas as distribuições Linux, incluindo Debian, Ubuntu, Fedora, Red Hat, Rocky Linux, AlmaLinux, openSUSE e Arch Linux.

Em sistemas BSD e macOS a sintaxe é diferente. Por exemplo:

$ date -v+15d

Portanto, scripts que utilizam date -d destinam-se especificamente a ambientes baseados no GNU Coreutils.

Conclusão

O comando date é muito mais do que uma ferramenta para exibir a data e a hora atuais. Sua capacidade de interpretar expressões como +15 days, -2 months ou +1 year torna extremamente simples a realização de cálculos envolvendo datas.

Além de tornar os scripts mais legíveis, essa abordagem elimina a necessidade de implementar manualmente regras de calendário, evitando erros relacionados à duração variável dos meses, anos bissextos e mudanças de ano. Sempre que precisar calcular datas em um script Bash, o date provavelmente já oferece a solução pronta.



Veja a relação completa dos artigos de Rubens Queiroz de Almeida