Spec-Zone.ru › Octave 8

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"

Функция strftime Octave поддерживает супермножество спецификаторов полей 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-часовое (чч:мм:сс [AP]M).

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

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

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 января текущего года.

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

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

Примечания:

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

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

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

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

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

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
mmmm Полное название месяца Декабрь
mmm Сокращенное название месяца Дек
мм Числовой номер месяца (дополняется нулями) 01, 08, 12
м Первая буква названия месяца (заглавная) Д
dddd Полное название дня недели Воскресенье
сб Сокращенное название дня недели Вск
дд Число месяца (дополняется нулями) 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–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/v8.1.0/Timing-Utilities.html

Spec-Zone.ru

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