Aqui está uma versão que funciona no Mac OS, que usa o utilitário BSD date
:
date -v1d -v-1d +%d%b%Y
Os argumentos são aplicados em ordem. Você pode imaginar que uma data é canalizada de um argumento para o outro. Por exemplo:
- Comece com a data atual (
date
) - > 2017-03-06
- Defina essa data para o primeiro dia do mês (
-v1d
) - > 2017-03-01
- Subtrair um dia disso (
-v-1d)
- > 2017-02-28
- Formate a data (
+%d%b%Y
) - > 28 de fevereiro de 2017
Você pode alcançar qualquer número de meses para frente ou para trás usando date -v-1m -v1d -v-1d
, substituindo -1m
pelo número de meses anteriores ou futuros ( +1m
) desejados.
Essa é a resposta genérica. Esta questão pergunta especificamente sobre datas relativas a uma data inicial. O utilitário de data do Mac OS / BSD não permite que você forneça um datestamp para iniciar, mas você pode definir cada elemento de data individualmente:
date -v2015y -v1m -v15d -v1d -v-1d +%d%b%Y
- > 31dec2014