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.
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.
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 |
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
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"
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"
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"
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.
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"
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"
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.
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.