Вот версия, которая работает в Mac OS и использует утилиту BSD date
:
date -v1d -v-1d +% d% b% Y
Аргументы применяются по порядку. Вы можете представить себе, что дата передается по конвейеру от одного аргумента к другому. Например:
date
) -> 2017-03-06 -v1d
) -> 2017-03-01 -v-1d)
-> 2017-02-28 +% d% b% Y
) -> 28Feb2017 Вы можете перейти на любое количество месяцев вперед или назад, используя date -v-1m -v1d -v-1d
, заменив -1m
на количество месяцев назад или вперед ( + 1m
), которое вы хотите.
Это общий ответ. Этот вопрос конкретно касается дат относительно начальной даты. Утилита Mac OS / BSD date не позволяет указывать дату для начала, но вы можете установить каждый элемент даты индивидуально:
date -v2015y -v1m -v15d -v1d -v-1d +% d% b% Г
-> 31 декабря 2014