date
date — утилита Unix для работы с системными часами. Выводит текущую дату и время в различных форматах и позволяет устанавливать системное время.
Реализации
правитьЭтот раздел не завершён. |
В разных операционных системах существуют различные варианты команды, отличающиеся параметрами:
Использование
правитьПри вызове команды без параметров выводит текущее время:
$ date
Sun Dec 6 15:33:24 MSK 2009
При вызове с параметром, который начинается с цифры, устанавливает системное время. Поскольку стандарт Single Unix Specification не описывает, как утилита date
устанавливает время[1], разные операционные системы используют разные форматы для этого параметра: например, MMDDhhmm[[CC]YY][.ss]
в Linux, [[[[[CC]YY]MM]DD]hh]mm[.ss]
в FreeBSD и [[MMDD]hhmm|MMDDhhmm[CC]YY][.ss]
в Solaris (где CC
, YY
, MM
, DD
, hh
, mm
, и ss
означают столетие, год столетия, месяц, число, час, минуту и секунду). Следовательно,
$ date 1230100509.45 # в Linux и Solaris; или
$ date 0912301005.45 # в FreeBSD
устанавливает дату и время на 10:05:45, 30 декабря 2009.
При вызове с параметром, который начинается с +
, параметр используется как строка форматирования вывода.
Спецификатор | Описание | Пример (локаль en_US) | Пример (локаль ru_RU) | |
---|---|---|---|---|
День | ||||
%a |
день недели, сокр. | Sun | Вск | |
%A |
день недели, полный | Sunday | Воскресенье | |
%d |
число месяца (01—31) | 06 | ||
%e |
число месяца, дополненное пробелом ( 1—31) | 6 | ||
%j |
день года (001—366) | 340 | ||
%u |
день недели (1—7, воскресенье = 7) | 7 | ||
%w |
день недели (0—6, воскресенье = 0) | 0 | ||
Неделя | ||||
%U |
номер недели (00—53, воскресенье — первый день недели) | 49 | ||
%W |
номер недели (00—53, понедельник — первый день недели) | 48 | ||
%V |
номер недели (01—53, понедельник — первый день недели) | 49 | ||
Месяц | ||||
%m |
номер месяца (01—12) | 12 | ||
%h или %b |
месяц, сокр. | Dec | Дек | |
%B |
месяц, полный | December | Декабрь | |
Год | ||||
%y |
год без столетия (00—99) | 09 | ||
%C |
столетие (00—99) | 20 | ||
%Y |
год включая столетие | 2009 | ||
%g [2] |
год (без столетия) понедельника недели %V |
09 | ||
%G [2] |
год (включая столетие) понедельника недели %V |
2009 | ||
Дата | ||||
%D |
%m/%d/%y |
12/06/09 | ||
%x |
дата в формате текущей локали | 12/06/2009 | 06.12.2009 | |
%F [2] |
%Y-%m-%d |
2009-12-06 | ||
Час | ||||
%l [2] |
час в 12-часовой системе, дополненный пробелом ( 1—12) | 3 | ||
%I |
час в 12-часовой системе (01—12) | 03 | ||
%k [2] |
час, дополненный пробелом ( 0—23) | 15 | ||
%H |
час (00—23) | 15 | ||
%p |
В английских локалях, AM («до полудня») или PM («после полудня»). Во многих других локалях не используется. |
PM | ||
%P [2] |
То же, что %p , но строчными буквами |
pm | ||
Минута | ||||
%M |
минута (00—59) | 33 | ||
Секунда | ||||
%s [2] |
секунд с 00:00:00 1970-01-01 UTC (см. UNIX-время) | 1260102804 | ||
%S |
секунда (00—60) | 24 | ||
%N [2] |
наносекунда (000000000—999999999) | 000000000 | ||
Время | ||||
%r |
12-часовое время в текущей локали | 03:33:24 PM | 03:33:24 | |
%R [2] |
%H:%M |
15:33 | ||
%T |
%H:%M:%S |
15:33:24 | ||
%X |
время в стандартном формате для текущей локали | 03:33:24 PM | 15:33:24 | |
Дата и время | ||||
%c |
дата и время в стандартном формате для текущей локали | Sun 06 Dec 2009 03:33:24 PM MSK | Вск 06 Дек 2009 15:33:24 | |
Часовой пояс | ||||
%z [2] |
часовой пояс в формате RFC-2822 (±zzzz ) |
+0300 | ||
%:z [2] |
часовой пояс в формате RFC-3339 (±zz:zz ) |
+03:00 | ||
%Z |
алфавитный код часового пояса | MSK | ||
Оформление | ||||
%% |
Символ «%» | |||
%n |
Новая строка (0x0a )
| |||
%t |
Табуляция (0x09 )
|
Ключи
правитьЕдинственный ключ, который определён по стандарту Single Unix Specification — -u
[1]; остальные могут различаться в разных операционных системах. Ниже указаны ключи, которые используются в date
в GNU Coreutils.
-d, --date=СТРОКА
— вывести не текущее время/дату, а время/дату, описанное строкой.-f, --file=ФАЙЛ
— то же, чтоdate -d
для каждой строки файла.-r, --reference=ФАЙЛ
— вывести не текущее время/дату, а время/дату последнего изменения файла.-R, --rfc-2822
— вывести дату в формате RFC-2822. То же, чтоdate '+%a, %d %b %Y %T %z'
(например, «Sun, 06 Dec 2009 15:33:24 +0300»).--rfc-3339=СТРОКА
— вывести дату в формате RFC-3339; строка может быть «date», «seconds» или «ns», То есть:date --rfc-3339=date
— то же самое, чтоdate +%F
date --rfc-3339=seconds
— то же самое, чтоdate '+%F %T%:z'
date --rfc-3339=ns
— то же самое, чтоdate '+%F %T.%N%:z'
-s, --set=СТРОКА
— установить время/дату, описанное строкой.-u, --utc, --universal
— время выводится или устанавливается в UTC.