Получить дату последнего дня последнего месяца в сценарии оболочки

Как получить дату окончания предыдущего месяца на основе даты обработки?

Примеры:

  • Дата обработки = 15jan2015
  • Ожидаемая дата = 31dec2014,

  • Дата обработки = 10feb2015
  • Ожидаемая дата = 31jan2015

4 Solutions collect form web for “Получить дату последнего дня последнего месяца в сценарии оболочки”

date GNU:

 $ date +%d%b%Y 16Aug2015 $ date -d "$(date +%Y-%m-01) -1 day" +%d%b%Y 31Jul2015 

Некоторые оболочки имеют встроенную поддержку для обработки даты:

С ksh93 :

 $ printf "%(%d%b%Y)T\n" "1st day, yesterday" 31Jul2015 

С zsh :

 $ zmodload zsh/datetime $ strftime -sd %Y-%m-01-12 $EPOCHSECONDS $ strftime -rs d %Y-%m-%d-%H $d $ strftime %d%b%Y $((d-86400)) 31Jul2015 

Есть много способов сделать это; вот самый простой, который я нашел (здесь предполагается date GNU):

 $ date -d "-$(date +%d) days" Fri Jul 31 16:07:23 EDT 2015 

Вот версия, которая работает на Mac OS, которая использует утилиту date BSD:

date -v1d -v-1d +%d%b%Y

Аргументы применяются по порядку. Вы можете себе представить, что дата передается от одного аргумента к другому. Например:

  • Начать с текущей даты ( date ) -> 2017-03-06
  • Установите эту дату на 1-й день своего месяца ( -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 -v2015y -v1m -v15d -v1d -v-1d +%d%b%Y -> 31Dec2014

Попробуйте использовать этот код

 date -d "-$(date +%d) days month" +%Y-%m-%d 
  • Count nul разделили элементы в файле
  • Длина строки со сценарием оболочки
  • У меня есть команда, не найденная ошибка в моем скрипте оболочки, когда я запускаю код
  • Сценарий оболочки на основе TPS
  • Как получить 2 разных результата из 1 файла в unix?
  • Удалите определенный файл из каталога, если он единственный
  • Хранить задержанный вывод оболочки в переменную?
  • Сценарий оболочки конвертирует jpg-изображения
  • разделение файлов на основе их имени
  • В чем смысл if ;?
  • Ввод пароля вручную
  • Interesting Posts

    Почему ls и hexdump не согласны с моим размером файла?

    Почему загрузочный сектор на Linux-разделе пуст?

    Подробный DNS-запрос для просмотра запроса DNS-запроса?

    Имена файлов Untar в кодировке символов, отличных от кодировки, используемой в файловой системе

    Как загрузчик и ядро ​​взаимодействуют после загрузки ядра в память?

    да | apt-get install –fix-broken

    Есть ли способ активировать конкретную вкладку хром через bash?

    Как я могу использовать разные сеансы Emacs в разных окнах Emacs при использовании Emacs в режиме демона?

    Ядро Linux, отсутствует символ «__fentry__»

    Что означает «</ dev / null»?

    Цифры с нулевым заполнением до 2 цифр с помощью sed

    Изменить PATH в Debian 7.1.0 для JAVA

    Как создать папку с именем пользователя и датой в качестве имени папки?

    Все еще получать запрос пароля с помощью ssh с аутентификацией с открытым ключом?

    Как работают настройки шрифта в gnome, kde и xfce?

    Linux и Unix - лучшая ОС в мире.