Отображение текущей даты и времени без знаков препинания


118

Например, я хочу отображать текущую дату и время в следующем формате:

yyyymmddhhmmss 

Как я могу это сделать? Похоже , что приходит самый формат даты с -, /, :и т.д.

Ответы:


170

Ну вот:

date +%Y%m%d%H%M%S

Как man dateсказано в верхней части, вы можете использовать такую dateкоманду:

date [OPTION]... [+FORMAT]

То есть вы можете указать ему параметр формата, начиная с +. Вы, наверное, догадались, что означают символы форматирования, которые я использовал:

  • %Y на год
  • %m на месяц
  • %d на день
  • ... и так далее

Вы можете найти этот и другие символы форматирования в man date.


36

Простой пример в сценарии оболочки

#!/bin/bash

current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;

Без формата пунктуации: - +% Y% m% d% H% M% S
С пунктуацией: - +% Y-% m-% d% H:% M:% S


2
"`date +%Y-%m-%d %H:%M:%S`"дает мнеdate: illegal time format
Sinux

6

Если вы используете Bash, вы также можете использовать одну из следующих команд:

printf '%(%Y%m%d%H%M%S)T'       # prints the current time
printf '%(%Y%m%d%H%M%S)T' -1    # same as above
printf '%(%Y%m%d%H%M%S)T' -2    # prints the time the shell was invoked

Вы можете использовать опцию -v varnameдля сохранения результата $varnameвместо его вывода на стандартный вывод:

printf -v varname '%(%Y%m%d%H%M%S)T'

Хотя команда date всегда будет выполняться в подоболочке (т. Е. В отдельном процессе), printf является встроенной командой и, следовательно, будет быстрее.


Для тех, кто ищет дополнительную документацию о том, какие %параметры вы можете передать, похоже, это использует dateкоманду. Итак, man dateмы предоставим вам доступные варианты.
электровир

4

Без пунктуации (как упомянул @Burusothman):

current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;

O / P:

20170115072120

С пунктуацией :

current_date_time="`date "+%Y-%m-%d %H:%M:%S"`";
echo $current_date_time;

O / P:

2017-01-15 07:25:33

0

Интересный / забавный способ сделать это с помощью расширения параметров (требуется bash 4.4или новее):

${parameter@operator} - P operator

Расширение - это строка, которая является результатом расширения значения параметра, как если бы это была строка приглашения.

$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.