date

Просмотр или установка даты и времени (POSIX)

Синтаксис:

date [-tuv] [-s seconds] [+format] 
date [-uv] [-S seconds] date

Опции:

-S seconds
Установить максимальное число секунд реального времени, в течение которого утилитой date может корректировать время. Утилита date не повышает тактовую частоту более чем на 100% и не снижает ее более чем на 50%. Если утилите date не удается выполнить плавную корректировку с такими ограничениями, время изменяется мгновенно. (Значение по умолчанию равно 300 секундам; для отключения плавной корректировки используется опция -S 0).
-s seconds
Отобразить эту дату в виде строки с числом секунд, прошедших с начала эры Unix (00:00, 1 января 1970 г.). Это значение используется в качестве числа секунд вместо значения системного времени.
-t
Отобразить текущее время операционной системы в секундах от начала эры Unix, в форме длинного целого числа.
-u
Выполнить операции с использованием всемирного координированного времени (Coordinated Universal Time, UTC) вместо местного времени. UTC –стандартный термин, означающий среднее время по Гринвичу (Greenwich Mean Time, GMT).
-v
Вывести расширенную информацию.
date
Значение для установки даты. Изменение даты доступно только суперпользователю (root). Для получения дополнительной информации см. раздел "Установка даты" далее.
+format
Формат отображения даты и времени.

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:

Утилита date используется для просмотра и установки текущей системной даты и времени в программном обеспечении. Установку времени с использованием утилиты date может выполнять только суперпользователь (root).

Отображение даты

Обычно утилита date отображает текущую дату и время согласно внутреннему времени операционной системы, которое отсчитывается в программном обеспечении как количество секунд, прошедших с начала эры Unix (00:00, 1 января 1970 г.). Если указана опция -s секунды, то вместо текущего времени ОС утилитой date используется значение аргумента seconds.

Формат и содержание отображаемой даты и времени можно установить с помощью аргумента +format. Значение format состоит из ASCII-символов и спецификаторов полей, начинающихся с символа %, аналогично спецификатору формата printf() в языке C (однако типы полей в данном случае обозначаются абсолютно другими символами). При выводе каждое описание поля заменяется на соответствующее значение; остальные символы копируются в выходные данные без изменений.


Note: Этой утилитой используется функция strftime() библиотеки libc, которая преобразует значение времени в строку. Полный список спецификаторов полей, доступных для использования в аргументе +format, см. в разделе strftime() в руководстве по библиотекам.

Выходная строка утилиты date всегда завершается символом новой строки.

Установка даты

С помощью утилиты date системный администратор с учетной записью root может устанавливать системное время. Для синхронизации аппаратных часов с текущим системным временем, установленным с помощью утилиты date, можно использовать утилиту rtc.


Note: При установке даты в период перехода часового пояса с летнего времени на поясное время следует соблюдать осторожность. При изменении времени в часовом поясе на поясное местное время уменьшается на один час (например, вместо 2:00 ночи устанавливается 1:00 ночи). В течение этого часа местное время оказывается неопределенным (например, момент 1:14 ночи в процессе перехода часового пояса на летнее время возникает в течение ночи дважды). Во избежание проблем при установке даты в этот период следует использовать время UTC.

По умолчанию, если новое время находится в диапазоне (-2,5 минут + старое время, 5 минут + старое время), то утилита date выполняет "плавную корректировку", т.е. повышение скорости отсчета времени на менее 100% или ее снижение менее чем на 50% на период от 1 секунды до 5 минут, до приведения часов в соответствие с новым временем. Эта плавная корректировка не вызывает существенных колебаний в отсчете времени. Плавную корректировку можно деактивировать с помощью опции -S 0.

Утилита date поддерживает три формата установки времени:

  1. [[[ВВ]ГГ]ММ]ДД]ччмм[.СС]
  2. ММДДччмм[ГГ]
  3. ДД [Месяц [[ВВ]ГГ [чч [мм [СС]]]]] [am|pm]

где:

ВВ
Столетие (например, 19, если указывается 1997 год)
ГГ
Последние две цифры года (например, 97, если указывается 1997 год)
ММ
Номер месяца в году (январь – 01, февраль – 02 и т.д.)
Месяц
Номер месяца (1, 2, ... 12) или стандартное английское сокращение названия месяца (jan, feb, ... dec)
ДД
День месяца
чч
Час дня
мм
Минута в часе
СС
Секунда в минуте
am|pm
До полудня (am) или после полудня (pm); эти значения можно использовать вместо ввода в 24-часовом формате, при этом значение часов должно быть меньше 13

Формат 1 совместим с утилитой touch. Каждое поле содержит две цифры, поэтому перед одноразрядными числами следует добавлять 0. Этот формат оптимален для корректировки времени дня, так как он имеет минимальную форму ччмм (часы и минуты).

Формат 2 соответствует соглашениям по формату дат в System V UNIX. Он аналогичен формату 1 с указанием месяца и дня, но в данном случае год можно указывать в конце параметра вместо начала. Если в дате присутствует точка (.), то такая дата рассматривается утилитой date как указанная в формате 1 (не в формате 2). Кроме того, форматы ММДДччммГГ (формат 2) и ГГММДДччмм (формат 1) различаются утилитой date по значению первой пары цифр. Годы 00-12 относятся ко времени до начала эры Unix. Поэтому в случае, если первая пара цифр находится в этом диапазоне, дата считается указанной в формате 1.

Формат 3 соответствует соглашениям по формату дат в QNX4 и более ранних. Использование этого формата предполагается при наличии более одного операнда (дата в остальных двух форматах имеет форму непрерывной строки цифр), или если указано только одно число из двух или менее цифр.

При изменении даты и времени утилита date добавляет строку в файл /var/log/wtmp если он существует.


Note: Если файл var/log/wtmp не существует, то утилита date его не создает. Размер этого файла может быстро увеличиться, что негативно влияет на встраиваемую систему ввиду ограниченности ее ресурсов.

Примеры:

Просмотр даты и времени в отдельных строках:

$ date "+DATE: %m/%d/%y%nTIME: %H:%M:%S" DATE: 01/20/99 TIME: 08:51:59

Просмотр времени в 12-часовом формате:

$ date "+TIME: %r" TIME: 01:36:32 PM

Установка системной даты 22 февраля 1997 г.:

date 22 2 97

Установка системной даты и времени 16 мая 1997 г., 4:30 после полудня:

date 16 may 1997 4 30 pm

Перевод системного времени на 4:34 после полудня, дата текущая:

date 1634

Следующая команда содержит пример использования опции date -s; по этой команде выводится дата последней записи в файле /usr/adm/syslog (первый столбец каждой записи в этом файле содержит время в секундах с начала эры Unix):

$ date -s `tail -n1 /usr/adm/syslog | cut -f1 -d ' '` Wed Apr 15 14:25:49 EDT 1997

Для получения дополнительной информации см. разделы cut, logger и tail.

Файлы:

/var/log/wtmp
Если этот файл существует, то при изменении даты или времени в него добавляется запись об этом изменении.

Переменные окружения:

TZ
Местный часовой пояс. От значения TZ зависит преобразование между временем системных часов (UTC) и местным временем.

Возвращаемое значение:

0
Дата успешно отображена или установлена.
>0
Возникла ошибка.


Note: Формат некоторых из спецификаторов полей не определен при использовании настроек, отличных от настройки локализации в POSIX. Как следствие, синтаксический анализ вывода утилиты date в другой настройке локализации может быть затруднен. В ЗОСРВ «Нейтрино» в настоящее время поддерживается только настройка локализации POSIX (т.е. C).

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино», POSIX

Тематические ссылки:

phlocale, rtc, uptime

strftime()




Предыдущий раздел: Утилиты