Spec-Zone.ru › Octave 6

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.

: 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.

: 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.

: 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-часовое (чч:мм:сс [ДОП]ПМ).

%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, а другие предоставляются, поскольку они полезны.

: clock ()

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

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

Например:

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

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

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

: date ()

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

Например:

date ()
  ⇒ 20-Aug-1993

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

: 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.

: is_leap_year ()
: 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", "off", или "query", состояние функции приостановки изменяется или запрашивается. Когда состояние "off", функция pause возвращается сразу. Необязательное возвращаемое значение содержит предыдущее состояние функции pause. В следующем примере функция pause отключена локально:

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

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

См. также: kbhit.

: дни = datenum (datevec)
: дни = datenum (год, месяц, день)
: дни = datenum (год, месяц, день, час)
: дни = datenum (год, месяц, день, час, минута)
: дни = datenum (год, месяц, день, час, минута, секунда)
: дни = datenum ("datestr")
: дни = datenum ("datestr", f)
: дни = datenum ("datestr", p)
: [дни, сек] = datenum (…)

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

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

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

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

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

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

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

Примечания:

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

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

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

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

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

: 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 ЧЧ:ММ:СС ЧЧ 3:38:09 ПО
15 ЧЧ:ММ 15:38
16 ЧЧ:ММ ЧЧ 3: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
или пробелами, если установлено ПО 9:00 УТ
ММ Минута (с нулями) 10:05
СС Секунда (с нулями) 10:05:03
МММ Миллисекунды (с нулями) 10:05:03.012
УТ Использовать 12-часовой формат времени 11:30 УТ
ПО Использовать 12-часовой формат времени 11:30 ПО

Если 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) в вектор даты.

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

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

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

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

: d = addtodate (d, q, f)

Добавить значение q времени (с единицами f) к серийному числу datenum, 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–2022 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/v6.4.0/Timing-Utilities.html

Spec-Zone.ru

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