Формат изменения даты в unix

Я передаю дату как переменную в функции. Я хочу конвертировать эту дату в другом формате. пример

DT=2015-12-08 

Хотите преобразовать DT в 08-dec-2015 в Unix.

  • Сгенерировать время как выражение 1 / 1000th дня дня
  • Создайте каталог с сегодняшней датой и переместите в него файлы
  • неверная ошибка даты для% m% d% Y
  • Проверка даты в оболочке
  • Как работает команда «1 месяц назад» в команде даты?
  • Быстрый и грязный способ выполнения процесса более одного раза
  • Выключена на 1 год в GNU?
  • Как удалить папки, созданные с именами дат 2016-04-03 до 2016-10-4
  • Разница между двумя датами в Linux
  • Где используется @ перед строкой даты за секунды с момента задокументированной эпохи?
  • Как вести историю команд с временными отметками, выводимыми на терминал непрерывно?
  • Как сравнить две даты в оболочке?
  • 2 Solutions collect form web for “Формат изменения даты в unix”

    Предполагая дату GNU (т.е. не встроенный Linux):

     $ LC_TIME=C date --date=2015-12-08 +%d-%b-%Y 08-Dec-2015 

    Если вы используете не встроенный Linux или, в более общем плане, систему с датой GNU, вы можете использовать ее для набора произвольной даты.

     LC_ALL=C date -d "$DT" +%d-%b-%Y | tr AZ az 

    Если у вас нет даты GNU (или даже если вы это сделаете), вы можете сделать это в чистой оболочке.

     case $DT in *-01-*|*-1-*) month=jan;; *-02-*|*-2-*) month=feb;; *-03-*|*-3-*) month=mar;; *-04-*|*-4-*) month=apr;; *-05-*|*-5-*) month=may;; *-06-*|*-6-*) month=jun;; *-07-*|*-7-*) month=jul;; *-08-*|*-8-*) month=aug;; *-09-*|*-9-*) month=sep;; *-10-*) month=oct;; *-11-*) month=nov;; *-12-*) month=dec;; esac echo "${DT##*-}-$month-${DT%%-*}" 
    Linux и Unix - лучшая ОС в мире.