exponenta event banner

Создание последовательности дат и времени

Последовательность значений Datetime или Duration между конечными точками с размером шага

В этом примере показано, как использовать оператор двоеточия (:) для генерации последовательностей datetime или duration значения таким же образом, как создаются регулярно разнесенные числовые векторы.

Использовать размер шага по умолчанию

Создайте последовательность значений datetime, начиная с 1 ноября 2013 г. и заканчивая 5 ноября 2013 г. Размер шага по умолчанию - один календарный день.

t1 = datetime(2013,11,1,8,0,0);
t2 = datetime(2013,11,5,8,0,0);
t = t1:t2
t = 1x5 datetime
Columns 1 through 3

   01-Nov-2013 08:00:00   02-Nov-2013 08:00:00   03-Nov-2013 08:00:00

Columns 4 through 5

   04-Nov-2013 08:00:00   05-Nov-2013 08:00:00

Указать размер шага

Укажите размер шага 2 календарных дня с помощью caldays функция.

t = t1:caldays(2):t2
t = 1x3 datetime
   01-Nov-2013 08:00:00   03-Nov-2013 08:00:00   05-Nov-2013 08:00:00

Укажите размер шага в единицах, отличных от дней. Создайте последовательность значений datetime, разнесенных на 18 часов.

t = t1:hours(18):t2
t = 1x6 datetime
Columns 1 through 3

   01-Nov-2013 08:00:00   02-Nov-2013 02:00:00   02-Nov-2013 20:00:00

Columns 4 through 6

   03-Nov-2013 14:00:00   04-Nov-2013 08:00:00   05-Nov-2013 02:00:00

Используйте years, days, minutes, и seconds создание последовательностей даты и времени и длительности с использованием других единиц даты и времени фиксированной длины. Создайте последовательность значений длительности от 0 до 3 минут, увеличенную на 30 секунд.

d = 0:seconds(30):minutes(3)
d = 1x7 duration
     0 sec    30 sec    60 sec    90 sec   120 sec   150 sec   180 sec

Сравнить длительность с фиксированной длиной и размеры шагов длительности календаря

Назначение часового пояса t1 и t2. В America/New_York часовой пояс, t1 теперь происходит непосредственно перед переходом на летнее время.

t1.TimeZone = 'America/New_York';
t2.TimeZone = 'America/New_York';

Если последовательность создается с использованием размера шага, равного одному календарному дню, то разница между последовательными datetime значение не всегда равно 24 часам.

t = t1:t2;
dt = diff(t)
dt = 1x4 duration
   24:00:00   25:00:00   24:00:00   24:00:00

Создайте последовательность значений datetime, разнесенных на один день фиксированной длины,

t = t1:days(1):t2
t = 1x5 datetime
Columns 1 through 3

   01-Nov-2013 08:00:00   02-Nov-2013 08:00:00   03-Nov-2013 07:00:00

Columns 4 through 5

   04-Nov-2013 07:00:00   05-Nov-2013 07:00:00

Убедитесь, что разница между последовательными datetime значение равно 24 часам.

dt = diff(t)
dt = 1x4 duration
   24:00:00   24:00:00   24:00:00   24:00:00

Размер шага целого числа

Если указать размер шага в виде целого числа, он интерпретируется как количество 24-часовых дней.

t = t1:1:t2
t = 1x5 datetime
Columns 1 through 3

   01-Nov-2013 08:00:00   02-Nov-2013 08:00:00   03-Nov-2013 07:00:00

Columns 4 through 5

   04-Nov-2013 07:00:00   05-Nov-2013 07:00:00

Добавить длительность или длительность календаря для создания последовательности дат

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

Создайте скаляр даты и времени 1 ноября 2013 года в 8:00 утра.

t1 = datetime(2013,11,1,8,0,0);

Добавьте к дате и времени последовательность часов фиксированной длины.

t = t1 + hours(0:2)
t = 1x3 datetime
   01-Nov-2013 08:00:00   01-Nov-2013 09:00:00   01-Nov-2013 10:00:00

Добавьте к дате и времени последовательность календарных месяцев.

t = t1 + calmonths(1:5)
t = 1x5 datetime
Columns 1 through 3

   01-Dec-2013 08:00:00   01-Jan-2014 08:00:00   01-Feb-2014 08:00:00

Columns 4 through 5

   01-Mar-2014 08:00:00   01-Apr-2014 08:00:00

Каждое значение даты и времени в t происходит в первый день каждого месяца.

Убедитесь, что даты в t разнесены на 1 месяц.

dt = caldiff(t)
dt = 1x4 calendarDuration
   1mo   1mo   1mo   1mo

Определите количество дней между каждой датой.

dt = caldiff(t,'days')
dt = 1x4 calendarDuration
   31d   31d   28d   31d

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

t = datetime(2014,1,31) + calmonths(0:11)
t = 1x12 datetime
Columns 1 through 5

   31-Jan-2014   28-Feb-2014   31-Mar-2014   30-Apr-2014   31-May-2014

Columns 6 through 10

   30-Jun-2014   31-Jul-2014   31-Aug-2014   30-Sep-2014   31-Oct-2014

Columns 11 through 12

   30-Nov-2014   31-Dec-2014

Задание длины и конечных точек даты или последовательности длительности

В этом примере показано, как использовать linspace для создания одинаковых значений datetime или duration между двумя заданными конечными точками.

Создайте последовательность из пяти равноудаленных дат между 14 апреля 2014 года и 4 августа 2014 года. Сначала определите конечные точки.

A = datetime(2014,04,14);
B = datetime(2014,08,04);

Третий вход в linspace определяет количество линейно разнесенных точек, создаваемых между конечными точками.

C = linspace(A,B,5)
C = 1x5 datetime
   14-Apr-2014   12-May-2014   09-Jun-2014   07-Jul-2014   04-Aug-2014

Создайте последовательность из шести равноудаленных длительностей между 1 и 5,5 часами.

A = duration(1,0,0);
B = duration(5,30,0);
C = linspace(A,B,6)
C = 1x6 duration
   01:00:00   01:54:00   02:48:00   03:42:00   04:36:00   05:30:00

Последовательность значений Datetime с использованием правил календаря

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

Даты в конкретный день недели

Создайте последовательность дат, состоящую из следующих трех экземпляров понедельника. Во-первых, определите сегодняшнюю дату.

t1 = datetime('today','Format','dd-MMM-yyyy eee')
t1 = datetime
   23-Mar-2021 Tue

Первый вход в dateshift всегда является datetime массив, из которого требуется создать последовательность. Определить 'dayofweek' как второй ввод, указывающий на то, что значения datetime в последовательности вывода должны приходиться на определенный день недели. День недели можно указать по номеру или по имени. Например, можно указать понедельник либо как 2 или 'Monday'.

t = dateshift(t1,'dayofweek',2,1:3)
t = 1x3 datetime
   29-Mar-2021 Mon   05-Apr-2021 Mon   12-Apr-2021 Mon

Даты в начале месяца

Создайте последовательность дат начала месяца, начинающихся с 1 апреля 2014 года. Определить 'start' как второй вход в dateshift указывает, что все значения datetime в выходной последовательности должны приходиться на начало определенной единицы времени. Третий входной аргумент определяет единицу времени, в данном случае месяц. Последний вход в dateshift может быть массивом целых значений, который определяет способ t1 должны быть смещены. В этом случае 0 соответствует началу текущего месяца, и 4 соответствует началу четвертого месяца с t1.

t1 = datetime(2014,04,01);
t = dateshift(t1,'start','month',0:4)
t = 1x5 datetime
   01-Apr-2014   01-May-2014   01-Jun-2014   01-Jul-2014   01-Aug-2014

Даты в конце месяца

Создайте последовательность дат конца месяца, начинающихся с 1 апреля 2014 года.

t1 = datetime(2014,04,01);
t = dateshift(t1,'end','month',0:2)
t = 1x3 datetime
   30-Apr-2014   31-May-2014   30-Jun-2014

Определите количество дней между каждой датой.

dt = caldiff(t,'days')
dt = 1x2 calendarDuration
   31d   30d

Даты не разнесены поровну.

Другие единицы даты и времени

Можно указать другие единицы времени, такие как неделя, день и час.

t1 = datetime('now')
t1 = datetime
   23-Mar-2021 17:00:44

t = dateshift(t1,'start','hour',0:4)
t = 1x5 datetime
Columns 1 through 3

   23-Mar-2021 17:00:00   23-Mar-2021 18:00:00   23-Mar-2021 19:00:00

Columns 4 through 5

   23-Mar-2021 20:00:00   23-Mar-2021 21:00:00

Предыдущие вхождения дат и времени

Создайте последовательность значений datetime, начиная с предыдущего часа. Отрицательные целые числа на последнем входе в dateshift соответствуют значениям datetime, более ранним, чем t1.

t = dateshift(t1,'start','hour',-1:1)
t = 1x3 datetime
   23-Mar-2021 16:00:00   23-Mar-2021 17:00:00   23-Mar-2021 18:00:00

См. также

|