Форматы
Спецификаторы: %Y/%m/%d год/месяц/день, %H:%M:%S время, %s epoch,
%F/%T дата/время, %j день года, %A/%B день недели/месяц словами, %z смещение.
Команда date: текущее время, форматы вывода, метки времени для файлов и логов, арифметика дат.
date +%F
2026-06-30 (=%Y-%m-%d)
date +%Y%m%d-%H%M%S
метка для имён файлов
date +%s
epoch: секунды с 1970
date -d @1700000000
epoch → человекочитаемо
date -d "yesterday" +%F
вчера
date -d "now + 1 hour" +%T
через час
TZ='UTC' date
текущее время в другой зоне
date -Iseconds
ISO 8601
tar czf "bk-$(date +%F).tgz" /etc
дата в имени бэкапа
date выводит и форматирует дату/время. В скриптах (bash-scripting) — для меток
в именах файлов бэкапов и логов. (Системное время и таймзону настраивает
timedatectl.)
Ниже — основные ключи date; полный список — man date (форматные спецификаторы
+%… — отдельная тема, см. таблицу в «Рецептах»).
| Ключ | Что делает | Пример |
|---|---|---|
-u --utc |
Показать время в UTC вместо локальной таймзоны. | date -u |
-d --date string |
Показать дату по строке (timestamp, "yesterday", "now + 1 hour"), не текущую. | date -d "yesterday" +%F |
-I --iso-8601 date|hours|minutes|seconds |
Вывести дату/время в формате ISO 8601. | date -Iseconds |
-R --rfc-email |
Вывести дату в формате RFC 5322 (для почты и HTTP-заголовков). | date -R |
-s --set string |
Установить системное время вручную; для обычной синхронизации используй timedatectl. опасно | sudo date -s "2026-06-30 14:00:00" |
-f --file datefile |
Прочитать и вывести по одной дате на строку из файла. | date -f dates.txt |
Ничего не найдено. Попробуй запрос короче.
Спецификаторы: %Y/%m/%d год/месяц/день, %H:%M:%S время, %s epoch,
%F/%T дата/время, %j день года, %A/%B день недели/месяц словами, %z смещение.
date по умолчанию печатает с пробелами/: (плохо для имён). Используй формат:
date +%Y%m%d-%H%M%S или %F.
date берёт системную зону. Проверь/смени через timedatectl; для UTC — date -u;
разово в другой зоне — TZ='Europe/London' date. Сбитые часы — NTP в timedatectl.
Зависит от локали (LC_TIME). Установи нужную локаль (см. locale):
LC_TIME=ru_RU.UTF-8 date '+%A %d %B'.
printf '%s %s\n' "$(date -Iseconds)" "сообщение" или используй журнал systemd
(journalctl сам ставит таймстампы).
Есть неточность? Сообщить об ошибке в статье