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

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

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

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

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

  • Возможное состояние гонки при подключении плагинов для наушников
  • Ожидайте сценарий для копирования файла
  • Скрипт не работает, но команда работает вне сценария
  • Как сохранить результат printf в переменной в GDB?
  • Сохранение вывода команды в переменной оболочки
  • Сплит PDF в документы с несколькими страницами каждый
  • Создание наборов файлов, которые соответствуют заданному размеру носителя для tar -T
  • запросить ошибку, если нет аргумента argv ожидать сценарий
  • 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 - лучшая ОС в мире.