Spec-Zone.ru › Octave 9

Далее: Утилиты файловой системы, Вверх: Утилиты системы [Оглавление][Индекс]

36.1 Утилиты времени ¶

Ядро Octave содержит набор функций для работы со значениями времени, которые используют аналогичные функции из стандартной библиотеки C. Несколько из этих функций используют структуру данных для времени, включающую следующие элементы:

usec

Микросекунды после секунды (0-999999).

sec

Секунды после минуты (0-60). Это число может быть 60, чтобы учесть високосные секунды.

min

Минуты после часа (0-59).

hour

Часы после полуночи (0-23).

mday

День месяца (1-31).

mon

Месяцы после января (0-11).

year

Годы после 1900.

wday

Дни с воскресенья (0-6).

yday

Дни с 1 января (0-365).

isdst

Флаг летнего времени.

gmtoff

Смещение в секундах от UTC.

zone

Временная зона.

В описаниях следующих функций эта структура называется tm_struct.

: seconds = time () ¶

Возвращает текущее время как количество секунд с эпохи.

Эпоха отсчитывается от 00:00:00 UTC (Координированного универсального времени) 1 января 1970 года. Например, в понедельник 17 февраля 1997 года в 07:15:06 UTC, значение, возвращаемое time, составляло 856163706.

См. также: strftime, strptime, localtime, gmtime, mktime, now, date, clock, datenum, datestr, datevec, calendar, weekday.

: t = now () ¶

Возвращает текущую локальную дату/время как порядковый номер дня (см. datenum).

Целая часть, floor (now), соответствует числу дней между сегодняшним днем и 1 января 0000 года.

Дробная часть, rem (now, 1), соответствует текущему времени.

См. также: clock, date, datenum.

: str = ctime (t) ¶

Преобразует значение, возвращенное из time, (или любое другое неотрицательное целое число), в локальное время и возвращает строку в том же формате, что и asctime.

Функция ctime (time) эквивалентна asctime (localtime (time)). Например:

ctime (time ())
   ⇒ "Mon Feb 17 01:15:06 1997\n"

См. также: asctime, time, localtime.

: tm_struct = gmtime (t) ¶

Принимая значение, возвращенное из time, или любое неотрицательное целое число, возвращает структуру времени, соответствующую UTC (Координированному универсальному времени).

Например:

gmtime (time ())
     ⇒ {
           usec = 0
           sec = 6
           min = 15
           hour = 7
           mday = 17
           mon = 1
           year = 97
           wday = 1
           yday = 47
           isdst = 0
           gmtoff = 0
           zone = GMT
        }

См. также: strftime, strptime, localtime, mktime, time, now, date, clock, datenum, datestr, datevec, calendar, weekday.

: tm_struct = localtime (t) ¶

Принимая значение, возвращенное из time, или любое неотрицательное целое число, возвращает структуру времени, соответствующую местному часовому поясу.

localtime (time ())
     ⇒ {
           usec = 0
           sec = 6
           min = 15
           hour = 1
           mday = 17
           mon = 1
           year = 97
           wday = 1
           yday = 47
           isdst = 0
           gmtoff = -21600
           zone = CST
        }

См. также: strftime, strptime, gmtime, mktime, time, now, date, clock, datenum, datestr, datevec, calendar, weekday.

: seconds = mktime (tm_struct) ¶

Преобразует структуру времени, соответствующую местному времени, в количество секунд с эпохи.

Например:

mktime (localtime (time ()))
     ⇒ 856163706

См. также: strftime, strptime, localtime, gmtime, time, now, date, clock, datenum, datestr, datevec, calendar, weekday.

: str = asctime (tm_struct) ¶

Преобразует структуру времени в строку с использованием следующего формата: "ddd mmm mm HH:MM:SS yyyy\n".

Например:

asctime (localtime (time ()))
     ⇒ "Mon Feb 17 01:15:06 1997\n"

Это эквивалентно ctime (time ()).

См. также: ctime, localtime, time.

END_OF_DOCUMENT_MARKER
: str = strftime (fmt, tm_struct) ¶

Форматирует структуру времени tm_struct гибким способом, используя строку формата fmt, которая содержит замены ‘%’ подобные тем, что в printf.

За исключением случаев, отмеченных особо, заменённые поля имеют фиксированный размер; числовые поля дополняются нулями при необходимости. По умолчанию дополнение выполняется нулями; для полей, отображающих одно число, дополнение может быть изменено или запрещено путём добавления одного из модификаторов, описанных ниже, после ‘%’. Неизвестные спецификаторы полей копируются как обычные символы. Все остальные символы копируются в выходной поток без изменений. Например:

strftime ("%r (%Z) %A %e %B %Y", localtime (time ()))
      ⇒ "01:15:06 AM (CST) Monday 17 February 1997"

Функция Octave strftime поддерживает расширенный набор спецификаторов полей ANSI C.

Символьные поля-литералы:

%%

Символ %.

%n

Символ новой строки.

%t

Символ табуляции.

Числовые модификаторы (нестандартное расширение):

- (dash)

Не добавлять пробелы к полю.

_ (underscore)

Добавлять пробелы к полю.

Поля времени:

%H

Час (00-23).

%I

Час (01-12).

%k

Час (0-23).

%l

Час (1-12).

%M

Минута (00-59).

%p

AM или PM по локали.

%r

Время, 12-часовое (чч:мм:сс [AM/PM]).

%R

Время, 24-часовое (чч:мм).

%s

Время в секундах с 00:00:00, 1 января 1970 года (нестандартное расширение).

%S

Секунда (00-61).

%T

Время, 24-часовое (чч:мм:сс).

%X

Представление времени по локали (%Ч:%М:%С).

%z

Смещение от UTC (±ччмм) или ничего, если часовой пояс не определяется.

%Z

Часовой пояс (EDT) или ничего, если часовой пояс не определяется.

Поля даты:

%a

Сокращённое название дня недели по локали (Вс-Сб).

%A

Полное название дня недели по локали (Воскресенье-Суббота).

%b

Сокращённое название месяца по локали (Ян-Дек).

%B

Полное название месяца по локали (Январь-Декабрь).

%c

Дата и время по локали (Сб Ноя 04 12:02:33 EST 1989).

%C

Века (00-99).

%d

День месяца (01-31).

%e

День месяца (1-31).

%D

Дата (мм/дд/гггг).

%h

То же, что и %b.

%j

Номер дня года (001-366).

%m

Месяц (01-12).

%U

Номер недели в году с воскресеньем как первым днём недели (00-53).

%w

День недели (0-6).

%W

Номер недели в году с понедельником как первым днём недели (00-53).

%x

Представление даты по локали (мм/дд/гг).

%y

Последние две цифры года (00-99).

%Y

Год (1970-).

См. также: strptime, localtime, gmtime, mktime, time, now, date, clock, datenum, datestr, datevec, calendar, weekday.

: [tm_struct, nchars] = strptime (str, fmt) ¶

Преобразует строку str в структуру времени tm_struct под управлением строки формата fmt.

Если fmt не соответствует, nchars равно 0; в противном случае оно устанавливается в позицию последнего сопоставленного символа плюс 1. Всегда проверяйте это, если вы не уверены, что строка даты будет обработана корректно.

См. также: strftime, localtime, gmtime, mktime, time, now, date, clock, datenum, datestr, datevec, calendar, weekday.

Большинство оставшихся функций, описанных в этом разделе, не следуют стандартной библиотеке C. Некоторые из них доступны для совместимости с MATLAB, а другие предоставляются, потому что они полезны.

: datevec = clock () ¶
: [datevec, isdst] = clock () ¶

Возвращает текущую локальную дату и время в виде вектора даты.

Вектор даты содержит следующие поля: текущий год, месяц (1-12), день (1-31), час (0-23), минуту (0-59) и секунду (0-61). Поле секунд содержит дробную часть после десятичной точки для расширенной точности.

Необязательный второй вывод isdst — истина, если летнее время (DST) действует для часового пояса системы.

Например:

fix (clock ())
  ⇒   1993      8     20      4     56      1

clock более точен на системах, которые имеют функцию gettimeofday.

См. также: now, date, datevec.

: str = date () ¶

Возвращает текущую дату в виде строки в формате ДД-MMM-ГГГГ.

Например:

date ()
  ⇒ 20-Aug-1993

См. также: now, clock, datestr, localtime.

: secs = etime (t2, t1) ¶

Возвращает разницу во времени в секундах между двумя значениями времени, полученными из clock (t2 - t1).

Например:

t0 = clock ();
# many computations later...
elapsed_time = etime (clock (), t0);

установит переменную elapsed_time в количество секунд, прошедших с момента установки переменной t0.

См. также: tic, toc, clock, cputime, addtodate.

: [total, user, system] = cputime (); ¶

Возвращает время, затраченное процессором вашей сессией Octave.

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

Если ваша система не имеет возможности отслеживать использование процессорного времени, cputime возвращает 0 для каждого из своих значений вывода.

Обратите внимание, что, поскольку Octave потратила некоторое процессорное время на запуск, разумно проверить, работает ли cputime, проверив, является ли общее используемое время процессорного времени ненулевым.

См. также: tic, toc.

: tf = is_leap_year () ¶
: tf = is_leap_year (year) ¶

Возвращает значение true, если year является високосным годом, и false в противном случае.

Если год не указан, is_leap_year использует текущий год.

Например:

is_leap_year (2000)
   ⇒ 1

См. также: weekday, eomday, calendar.

: tic () ¶
: id = tic () ¶

Инициализирует таймер по реальному времени.

Вызов tic без выходных аргументов сбрасывает внутренний таймер. Последующие вызовы toc возвращают количество секунд, прошедших с момента установки таймера.

Если вызов осуществляется с одним выходным аргументом, tic создаёт новый экземпляр таймера и возвращает идентификатор таймера id. id — скаляр типа uint64, который можно передать в toc, чтобы проверить время, прошедшее по этому таймеру, а не по умолчанию внутреннему таймеру.

Пример 1: тестирование кода с внутренним таймером

tic;
# many computations later...
elapsed_time = toc;

Пример 2: смешанный идентификатор таймера и внутренний таймер

tic;
pause (1);
toc
⇒ Elapsed time is 1.0089 seconds.
id = tic;
pause (2);
toc (id)
⇒ Elapsed time is 2.01142 seconds.
toc
Elapsed time is 3.02308 seconds.

Вызов tic и toc таким образом позволяет вложенные вызовы таймера.

Если вас больше интересует время работы вашего процесса, используйте функцию cputime вместо неё. Функции tic и toc отслеживают фактическое время по реальному времени, прошедшее между вызовами. Это может включать время, потраченное на обработку других задач или бездействие.

См. также: toc, cputime.

: toc () ¶
: toc (id) ¶
: elapsed_time = toc (…) ¶

Измерить прошедшее время по таймеру реального времени.

Без аргументов возвращает количество секунд, прошедших по внутреннему таймеру с момента последнего вызова tic.

При передаче идентификатора id определённого таймера возвращает количество секунд, прошедших с момента инициализации таймера id.

См. tic, примеры использования tic/toc.

См. также: tic, cputime.

: pause () ¶
: pause (n) ¶
: old_state = pause ("on") ¶
: old_state = pause ("off") ¶
: old_state = pause ("query") ¶

Приостановить выполнение программы или изменить состояние функции паузы.

Если вызов происходит без входных аргументов, программа приостанавливается до ввода символа. Если аргумент n — положительное действительное число, это указывает количество секунд, на которое программа должна быть приостановлена, например:

tic; pause (0.05); toc
     -| Elapsed time is 0.05039 seconds.

Следующий пример выводит сообщение, а затем ждёт 5 секунд, прежде чем очистить экран.

disp ("wait please...");
pause (5);
clc;

Если вызов происходит со строковым аргументом "on", "query", состояние функции паузы изменяется или запрашивается. Когда состояние равно "off", функция паузы возвращает значение немедленно. Необязательное возвращаемое значение содержит предыдущее состояние функции паузы. В следующем примере пауза отключена локально:

old_state = pause ("off");
tic; pause (0.05); toc
     -| Elapsed time is 3.00407e-05 seconds.
pause (old_state);

Пока программа приостановлена, Octave всё ещё обрабатывает рисование фигур и выполнение обратных вызовов графики.

См. также: kbhit.

: days = datenum (datevec) ¶
: days = datenum (year, month, day) ¶
: days = datenum (year, month, day, hour) ¶
: days = datenum (year, month, day, hour, minute) ¶
: days = datenum (year, month, day, hour, minute, second) ¶
: days = datenum ("datestr") ¶
: days = datenum ("datestr", f) ¶
: days = datenum ("datestr", p) ¶
: [days, secs] = datenum (…) ¶

Возвращает дату/время ввода как числовой день, где 1 января 0000 определено как день 1.

Целая часть, floor (days) подсчитывает количество полных дней в дате ввода.

Дробная часть, rem (days, 1) соответствует времени в указанный день.

Ввод может быть вектором даты (см. datevec), строкой даты (см. datestr) или указан непосредственно как входные данные.

При обработке входных строк дат f — строка формата, используемая для интерпретации строк дат (см. datestr). Если формат f не указан, выполняется относительно медленный поиск различных форматов. Всегда предпочтительнее указать строку формата f, если она известна. Форматы, которые не указывают определённую компоненту времени, установят значение в ноль. Форматы, которые не указывают дату, будут по умолчанию равны 1 января текущего года.

При передаче отдельных аргументов year, month, day и т. д., каждый из них может быть скаляром или массивом, отличным от скаляра. Аргументы, отличные от скаляров, должны быть всех одинакового размера. Скалярные входные данные будут расширены до размера входных данных, отличных от скаляров.

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

Необязательный выходной параметр secs содержит время в указанный день с большей точностью, чем days.

Примечания:

  • Годы могут быть отрицательными и/или дробными.
  • Месяцы ниже 1 считаются январём.
  • Дни месяца начинаются с 1.
  • Дни, выходящие за пределы месяца, попадают в последующие месяцы.
  • Дни до начала месяца попадают в предыдущий месяц.
  • Дни могут быть дробными.

Примеры:

Convert from datestrs:
d = datenum ("1966-06-14")
⇒ d = 718232


d = datenum ({"1966-06-14", "1966-06-15", "1966-06-16"})
⇒ d =
      718232
      718233
      718234


Convert from datevec:
d = datenum ([1966 06 14])
⇒ d = 718232


d = datenum ([1966 06 14 23 59 59])
⇒ d = 718232.9999884259


Specify date components separately:
d = datenum (1966, 6, 14)
⇒ d = 718232


d = datenum (1966, magic(3), 1)
⇒ d =

      718280   718068   718219
      718127   718188   718249
      718158   718311   718099

Внимание: datenums представляют определённое время для Земли в целом. Они не учитывают часовые пояса (сдвиги во времени на основе местоположения) или сезонные изменения из-за летнего времени (сдвиги во времени на основе местного регулирования). Следует знать, что можно создавать datenums, которые, когда интерпретируются функцией, учитывающей сдвиги часовых поясов и летнего времени, например, datestr, являются несуществующими или неоднозначными.

Внимание: данная функция не пытается обрабатывать юлианские календари, поэтому даты до 15 октября 1582 года ошибочны на 11 дней. Кроме того, следует знать, что только католические страны приняли календарь в 1582 году. Он был принят во всех странах только к 1924 году. См. страницу Википедии о григорианском календаре для получения дополнительной информации.

Предупреждение: високосные секунды игнорируются. Таблица високосных секунд доступна на странице Википедии о високосных секундах.

См. также: datestr, datevec, now, clock, date.

Алгоритм: Питер Баум (http://vsg.cape.com/~pbaum/date/date0.htm)

END_OF_DOCUMENT_MARKER
: str = datestr (date) ¶
: str = datestr (date, f) ¶
: str = datestr (date, f, p) ¶

Форматирует заданную дату/время в соответствии с форматом f и возвращает результат в str.

date — это числовой номер даты (см. datenum), вектор даты (см. datevec) или строка или ячейный массив строк. В последнем случае он передаётся в datevec, чтобы определить формат входной даты.

f может быть целым числом, соответствующим одному из кодов в таблице ниже, или строкой формата даты.

p — год в начале века, в котором двухзначные годы будут интерпретироваться. Если не указано, по умолчанию используется текущий год минус 50.

Например, дата 730736.65149 (2000-09-07 15:38:09.0934) будет отформатирована следующим образом:

Код Формат Пример
0 дд-ммм-гггг ЧЧ:ММ:СС 07-Сен-2000 15:38:09
1 дд-ммм-гггг 07-Сен-2000
2 мм/дд/гг 09/07/00
3 ммм Сен
4 м С
5 мм 09
6 мм/дд 09/07
7 дд 07
8 сбб Чт
9 д Ч
10 гггг 2000
11 гг 00
12 мммгг Сен00
13 ЧЧ:ММ:СС 15:38:09
14 ЧЧ:ММ:СС ЧЧ 15:38:09 ЧЧ
15 ЧЧ:ММ 15:38
16 ЧЧ:ММ ЧЧ 15:38 ЧЧ
17 КВ-ГГ КВ3-00
18 КВ КВ3
19 дд/мм 07/09
20 дд/мм/гг 07/09/00
21 ммм.дд,гггг ЧЧ:ММ:СС Сен.07,2000 15:38:08
22 ммм.дд,гггг Сен.07,2000
23 мм/дд/гггг 09/07/2000
24 дд/мм/гггг 07/09/2000
25 гг/мм/дд 00/09/07
26 гггг/мм/дд 2000/09/07
27 КВ-ГГГГ КВ3-2000
28 мммгггг Сен2000
29 гггг-мм-дд 2000-09-07
30 ггггммддЧЧММСС 20000907T153808
31 гггг-мм-дд ЧЧ:ММ:СС 2000-09-07 15:38:08

Если f — строка формата, следующие символы распознаются:

Символ Значение Пример
гггг Полный год 2005
гг Двухзначный год 05
мммм Полное название месяца Декабрь
ммм Сокращённое название месяца Дек
мм Число месяца (заполняется нулями) 01, 08, 12
м Первая буква названия месяца (заглавная) Д
дддд Полное название дня недели Воскресенье
сбб Сокращённое название дня недели Вск
дд Число месяца (заполняется нулями) 11
д Первая буква названия дня недели (заглавная) В
ЧЧ Часы (заполняются нулями) 09:00
или заполняются пробелами, если указан PM 9:00 AM
ММ Минуты (заполняются нулями) 10:05
СС Секунды (заполняются нулями) 10:05:03
МММ Миллисекунды (заполняются нулями) 10:05:03.012
AM Использовать 12-часовой формат времени 11:30 AM
PM Использовать 12-часовой формат времени 11:30 PM

Если f не указан или равен -1, использовать 0, 1 или 16, в зависимости от того, есть ли часть даты или время в date.

Если p не указан, по умолчанию используется текущий год минус 50.

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

См. также: datenum, datevec, date, now, clock.

: v = datevec (date) ¶
: v = datevec (date, f) ¶
: v = datevec (date, p) ¶
: v = datevec (date, f, p) ¶
: [y, m, d, h, mi, s] = datevec (…) ¶

Преобразует числовой номер даты (см. datenum) или строку даты (см. datestr) в вектор даты.

Вектор даты — это строка-вектор с шестью элементами, представляющими год, месяц, день, час, минуту и секунды соответственно.

Входные данные числового номера даты могут быть скаляром или массивом. Входные данные строки даты могут быть одной строкой даты, двумерным символьным массивом дат, где каждая строка — это строка даты, или ячейным массивом строк любой размерности, где каждый ячейный элемент содержит одну строку даты.

v — двумерный массив векторов дат, по одному вектору даты на строку. Для входных массивов порядок v основан на порядке следования дат в data в порядке следования столбцов.

f — строка формата, используемая для интерпретации строк даты (см. datestr). Если date — строка или ячейный массив строк, но формат не указан, используется эвристика для определения формата входных данных. Эта эвристика может привести к совпадениям, которые отличаются от результатов, ожидаемых пользователем. Кроме того, это предполагает относительно медкий поиск различных форматов. Всегда предпочтительнее указывать строку формата f, если она известна. Форматы, не указывающие конкретного компонента времени, будут иметь значение, равное нулю. Форматы, не указывающие конкретного компонента даты, будут по умолчанию принимать этот компонент как 1 января текущего года. Конечные символы игнорируются для расчёта вектора даты, даже если символы содержат дополнительную информацию о времени/дате.

p — год в начале века, к которому будут относиться двухзначные годы. Если не указано, по умолчанию используется текущий год минус 50.

См. также: datenum, datestr, clock, now, date.

: d = addtodate (d, q, f) ¶

Добавить значение q времени (с единицами f) к последовательному числу даты d.

f должно быть одним из "year", "month", "day", "hour", "minute", "second", или "millisecond".

См. также: datenum, datevec, etime.

: c = calendar () ¶
: c = calendar (d) ¶
: c = calendar (y, m) ¶
: calendar (…) ¶

Возвращает текущий ежемесячный календарь в матрице 6x7.

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

Если y и m указаны, возвращает календарь для года y и месяца m.

Если не указаны аргументы вывода, выводит календарь на экран вместо возвращения матрицы.

См. также: datenum, datestr.

: [n, s] = weekday (d) ¶
: [n, s] = weekday (d, format) ¶

Возвращает день недели как число в n и как строку в s.

Дни недели пронумерованы от 1 до 7, начиная с воскресенья.

d — последовательное число даты или строка даты.

Если строка format отсутствует или равна "short", то s будет содержать сокращенное название дня недели. Если format равна "long", то s будет содержать полное название.

Таблица значений возврата, основанная на format:

n "short" "long"
1 Вск Воскресенье
2 Пн Понедельник
3 Вт Вторник
4 Ср Среда
5 Чт Четверг
6 Пт Пятница
7 Сб Суббота

См. также: eomday, is_leap_year, calendar, datenum, datevec.

: e = eomday (y, m) ¶

Возвращает последний день месяца m для года y.

См. также: weekday, datenum, datevec, is_leap_year, calendar.

: datetick () ¶
: datetick (axis_str) ¶
: datetick (date_format) ¶
: datetick (axis_str, date_format) ¶
: datetick (…, "keeplimits") ¶
: datetick (…, "keepticks") ¶
: datetick (hax, …) ¶

Добавляет метки тиков с форматом даты к оси.

Ось, к которой применять метки, определяется axis_str, которая может принимать значения "x", "y", или "z". Значение по умолчанию — "x".

Формат меток определяется переменной date_format, которая может быть строкой или положительным целым числом, которое datestr принимает.

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

См. также: datenum, datestr.

Далее: Файловые утилиты, Назад: Системные утилиты [Оглавление][Индекс]

© 1996–2023 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.2.0/Timing-Utilities.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API