неверная ошибка даты для% m% d% Y

Я хочу преобразовать String в формате% m% d% Y на сегодняшний день.

Но, получив неверную ошибку даты, как показано ниже:

bash-4.1$ date -d '10042015' +"%m%d%Y" date: invalid date `10042015' 

Как это исправить?

  • Nautilus-script для перемещения файла в один и тот же каталог имен
  • Возможное состояние гонки при подключении плагинов для наушников
  • bash - получить pid для скрипта, используя имя файла сценария
  • Какой умный способ подсчитать количество дней с X?
  • Проверка даты в оболочке
  • Как конвертировать дату с «Oct 01 20:00» в формат «1 октября 20:00» (пробел)?
  • Команда запуска на основе вывода другой команды
  • сценарий tmux для запуска нескольких команд
  • One Solution collect form web for “неверная ошибка даты для% m% d% Y”

    Параметр date + устанавливает только выходной формат, а не вход. Вам нужно будет использовать другой инструмент или сначала форматировать строку:

     date --date="$(sed 's/^\([0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9][0-9][0-9]\)$/\3-\1-\2/' <<< '10042015')" 

    или

     date --date="$(sed 's/\(..\)\(..\)\(....\)/\3-\1-\2/' <<< '10042015')" 

    или просто

     date --date="$(sed 's/\(.*\)\(....\)$/\2\1/' <<< '10042015')" 

    (спасибо @Costas ). Несмотря на то, что последние два короче, я бы предложил первый, потому что:

    1. он более строгий, избегая странных ошибок при обработке строк от сторонних инструментов или пользователей и, что более важно,
    2. он более удобен в обслуживании, поскольку более очевидно, что делает код (перестановка трех чисел и перенос между ними между ними, а не перенос последних четырех символов в начало строки).
    Linux и Unix - лучшая ОС в мире.