Обработка времени и даты на языке Shell



date – команда работы с датой и временем. Позволяет выводить текущую дату и время в различных форматах, а также устанавливает системное время.

Команда имеет следующий формат:

date [– опция ] [+ спецификаторы ]

Если команда выполняется без аргументов, на стандартный вывод выводится текущие дата и время.

$ date

Sun Dec 16 15:33:24 MSK 2009

Можно самостоятельно задать формат вывода даты и времени через спецификаторы. Перечень основных спецификаторов приведен в таблице 3.2.

 

Таблица 3.2

Спецификаторы команды date

Спецификатор Описание Пример
%a сокращенное наименование дня недели Thu, Mon
%A полное наименование дня недели Th
%d число месяца (01—31) 02, 10, 31
%e число месяца, дополненное пробелом ( 1—31) 2, 9, 30
%j день года (001—366) 106, 299
%u день недели (1—7) 5 (=пятница)
%U номер недели (00—53, воскресенье — первый день недели) 15, 44
%m номер месяца (01—12) 02 (=февраль)
%h (%b) сокращенное наименование месяца Nov, Dec
%B полное наименование месяца November, May
%y год без столетия (00—99) 10 (1910 / 2010)
%C столетие (00—99) 20 (для 20хх годов)
%Y год включая столетие 1987, 2030
%D формат представления даты в виде %m/%d/%y 12/30/2015
%I час в 12-часовой системе (01—12) 03, 19
%k час в 24-часовой системе, дополненный пробелом ( 0—23) 6, 22
%H час в 24-часовой системе (00—23) 00, 21
%p, %P время с указанием AM или PM («до полудня» или «после полудня»). am, AM
%M минуты (00—59) 05, 55
%s число секунд, прошедших с 00:00:00 01/01/1970 1509660967
%S секунды (00—60) 56, 48
%N наносекунды (000000000—999999999) 596500424
%r время в 12-тичасовом формате 10:18:30 PM
%R время в формате %H:%M 22:19
%T время в формате %H:%M:%S 14:33:56
%z часовой пояс в формате RFC-2822 (±zzzz) +0000, -0400
%% выводит знак % 10:18:30 PM
%n, %t знак перевода строки и табуляции 22:19


       Для управления форматом вывода в качестве первого символа должен быть указан +. В строке могут содержаться произвольные слова, цифры и пр. Например, в приведенной ниже команде DATE: и TIME: будут интерпретированы как слова, в вместо спецификаторов будут выведены соответствующие им значения даты и времени:

$ date ” +DATE: %m/%d/%Y%nTIME: %H:%M:%S ”

DATE: 08/23/1998

TIME: 14:45:05

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

В таблице 3.3 приведены некоторые опции команды date.

Таблица 3.3

Опции команды date

Опции Описание Пример
$ date -d “ ММ/ DD/YYYY HH:MM:SS zzzz” Позволяет работать не с текущим временем, а указанном виде строки формата “MM/DD/YYYY [HH:MM:SS [zzzz]]”. Также команда воспринимает в качестве параметра слова и словосочетания “YESTERDAY”, “$x days ago”, “+2 minutes” $ date -d "03/14/1999" Sun Mar 14 00:00:00 UTC 1999 $ date -d "03/14/1999" +%A Sunday $ date -d "03/14/1999 00:34:56" +%T 00:34:56 $ date Sat Mar 13 21:37:56 UTC 1999 $ date -d "+2hours -3minutes " Sat Mar 13 23:34:56 UTC 1999
$ date -d@хххххххххх Число, стоящее после @ интерпретируется как число секунд с 01/01/1970. Команда выводит дату и время, соответствующую введенным секундам в стандартном формате date -d@838213188 Wed Jul 24 12:59:48 UTC 1996
$ date - s “ ММ/ DD/YYYY HH:MM:SS +/-xxxx” Устанавливает системное время в указанное в качестве параметра значение. Для выполнения необходимо работать как суперпользователь root date -s "01/01/2016"
$ date - r filename Показывает время последнего изменения файла filename $ date - r file.txt Fri Nov 3 07:15:54 UTC 2017
$ date -u Работает с универсальным кодированным временем UTC = 0000* - то есть время по Гринвичу. Для Москвы UTC+3 $ date -u +%z +0000

* Среднее время по Гринвичу (GMT) находится в одном часовом поясе с всемирным координированным временем (UTC).

 

Спецификатор %s позволяет узнать число секунд, прошедших с 01/01/1970 до текущей или заданной даты. Дата 01/01/1970 считается датой создания UNIX-систем.

 $ date -d "01/01/1970 00:01:00 +0000" +%s

300

Если необходимо производить отсчет даты от заданного значения, возможны следующие комбинации:

Команда Строка, содержащая сведения о дате Смещение вперед Смещение назад
date -d "10/15/2000 x day[s] ["] x week[s] ["] x month[s] ["] x year[s] ["] x hour[s] ["] x minute[s] ["] x second[s] ["] ago"
  ---------------------yesterday " tomorrow” next may/Monday/… last Sunday/hour/…  

Здесь х – произвольное число, слова “next” или “last”.

 

Некоторые примеры выполнения команды date приведены ниже.

$ date -d "next sunday" Выводит дату следующей пятницы
$ date -d " last monday" Выводит дату предыдущего понедельника
x=5 date -d "$x days ago" Выводит дату х дней назад от текущего значения
date -d "10/10/2000 3 days ago " Выводит дату на 3 дня раньше, чем указана в аргументе
date -d "00:00:25 13 seconds" Выводит время на 13 секунд больше указанного (например, Fri Nov 3 00:00:38 UTC 2017)
date –d yesterday Выводит вчерашнюю дату

 


Дата добавления: 2020-01-07; просмотров: 486; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!