15

Формат даты YYYY-MM-DD в shell-скрипте

10

Я пытался использовать $(date) в своем скрипте на Bash, однако мне нужно, чтобы дата была в формате YYYY-MM-DD. Как мне это сделать?

5 ответ(ов)

5

Попробуйте: $(date +%F)

Опция %F является псевдонимом для %Y-%m-%d.

1

Вы можете сделать что-то подобное:

$ date +'%Y-%m-%d'
0

Для получения текущей даты в формате YYYY-MM-DD вы можете использовать следующую команду в терминале:

$(date +%F)

Результат выполнения этой команды будет выглядеть так:

2018-06-20

Если вам также нужно получить текущее время в формате HH-MM-SS, вы можете использовать следующую команду. Обратите внимание, что здесь двоеточия (:) заменены на тире (-):

$(date +%F_%H-%M-%S)

Это поможет избежать проблем с символами в именах файлов. Вывод этой команды будет таким:

2018-06-20_09-55-58
0

Команда, которую вы привели, используется в Unix-подобных операционных системах для получения даты, которая была ровно час назад, в формате ГГГГ-ММ-ДД. Ваша команда date -d '1 hour ago' '+%Y-%m-%d' вернет дату в формате YYYY-MM-DD.

Пример вывода для команды может быть следующим (но это зависит от текущей даты и времени):

2015-06-14

Чтобы запустить данную команду, просто откройте терминал и введите её. Убедитесь, что у вас установлена команда date, которая поддерживает опцию -d.

0

С недавних пор в Bash (версия ≥ 4.2) вы можете использовать встроенный printf с модификатором формата %(strftime_format)T:

$ printf '%(%Y-%m-%d)T\n' -1  # Получаем YYYY-MM-DD (-1 означает "текущие время")
2017-11-10
$ printf '%(%F)T\n' -1  # Синоним предыдущей команды
2017-11-10
$ printf -v date '%(%F)T' -1  # Сохраняем в переменную $date

printf намного быстрее, чем date, поскольку это встроенная команда Bash, в то время как date является внешней командой.

Кроме того, printf -v date ... работает быстрее, чем date=$(printf ...), потому что не требует создания подшелла.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь