Команда date - отобразить и установить дату и время в Mac OS X

Синтаксис:

date [-ju] [-r seconds] [-v [+|-]val[ymwdHMS]] ... [+output_fmt]

date [-jnu] [[[mm]dd]HH]MM[[cc]yy][.ss]

date [-jnu] -f input_fmt new_date [+output_fmt]

date [-d dst] [-t minutes_west]

Описание:

При запуске без каких-либо параметров, команда date отобразит системное время и дату. Параметры позволяют изменять формат вывода даты и времени и изменять системное время компьютера.

Время и дата считываются из часов ядра Mac OS X. При использовании параметров изменения даты и времени обновляется время, как и в ядре операционной системы, так и аппаратные часы. Для изменения времени необходимо иметь права супер-пользователя, но в случае если в Mac OS X установлен уровень защиты больше чем 1 (команда securlevel), то системное время не может быть изменено более чем на одну секунду.

Параметры:

-d dst

Установить для ядра переход на зимнее и летнее время. Если dst не ноль, то вызовы функции togettimeofday будут возвращать не нулевое значение системной переменной tz_dsttime.

-f

Использовать строку формата для разбора задаваемого времени input_fmt, а не использовать формат по умолчанию [[[mm]dd]HH]MM[[cc]yy][.ss]. Разбор строки времени производится с помощью функции strptime.

-j

Не позволяет изменять дату. Данный параметр позволяет использовать -f и параметры конвертации даты из одного формата в другой.

-n

Если запущен демон timed, то изменение даты и времени происходит на всех компьютерах в локальной группе. Параметр -n позволяет в данной ситуации изменить время только на одном компьютере.

-r seconds

Задается количество секунд прошедших от 00:00:00 1 января 1970 по всемирному координированному времени UTC. Печатает дату и время, которое получается, от заданного смещения. Seconds могут быть заданы в десятичной, восьмеричной и шестнадцатеричной системе счисления.

-t minutes_west

Позволяет задать смещение в минутах на запад от GMT (от Гринвичского меридиана). minutes_west определяет количество минут возвращаемых переменной tz_minuteswest при вызовах функции gettimeofday

-u

Показать текущее время UTC (Всемирное координированное время - отличается от Гринвича менее чем на 1 секунду).

-v

В случае если времени предшествует знак плюс '+' или минус '-', то происходит корректировка времени, то есть берется текущее время и сдвигается на заданное значение секунд, минут, часов, дней месяца, недели, месяцев или лет вперед или назад в зависимости от знака. Если знак не установлен, происходит установка нового заданного времени. Дата в одной команде может быть скорректирована несколько раз. Обработка происходит последовательно, в порядке обнаружения параметров.

При установке значения даты-времени, а не корректировке ее, секунды и минуты должны быть в диапазоне 0-59, часы в диапазоне 0-23, дни месяца 1-31, день недели 0-6 (воскресенье - суббота), месяца 1-12 и года в диапазоне 80-38 или 1980-2038.

Если используются числовые значения, то необходимо указать каждый параметр y, m, w, d, H, M, S для корректировки.
День недели и месяц могут быть заданы именем, а не числовым значением. Если указать перед ними знаки '+' или '-' будет произведен сдвиг даты, но только если день недели и месяц отличаются от текущего. В противном случае изменения даты не произойдет.

 

Если устанавливается конкретное значение даты и времени использование летнего/зимнего времени может быть проигнорировано. Это происходит, если корректировка пересекает момент перехода на зимнее или летнее время.

 

Если корректировка устанавливает не существующее время (выпадающее из-за перехода на летнее время). Время будет автоматически переведено на 1 час вперед для установки действительного времени. Если устанавливается время, существующее дважды (во время перехода на зимнее время) будет установлено более раннее время.

 

Сдвиг (сдвиг) даты по месяцам, неоднозначная функция из-за различного количества дней в месяце. Прежде всего, утилита пытается сохранить номер дня в месяце в случае, например, сдвига вперед на один месяц с 31 мая, то будет установлено 30 июня, аналогично сдвиг с 30 января установит последний день февраля. Поэтому необходимо помнить, что при сдвиге месяцев как вперед, так и назад может поменяться день месяца

Каноническое представление даты и времени в Mac OS X и BSD.

cc Столетие (может быть 19 или 20) и предшествует году

yy Номер года. Может быть как 88 для 1988 или 07 для 2007. mm Номер месяца, числа от 1 до 12.

dd День месяца. Число от 1 до 31

HH Час. Число от 0 до 23.

MM Минуты 0-59.

ss Секунды 0-61 (0-59 плюс две секунды сдвига)

Все кроме минут является обязательным.

Автоматически обрабатываются переходы с зимнего на летнее время, високосные годы и високосные секунды.

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

В случае успешного завершения возвращается 0, Если невозможно изменить дату возвращается 1 и 2 если можно изменить дату на локальном компьютере, но невозможно изменение в группе (параметр -n)

Примеры:

Установить время 10:30, без изменения даты

date 1030

Установить дату: 9 мая, 2016 года 10:30

date 0509103016

Продолжение темы команд в macOS