Генерация последовательности дат и время

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

В этом примере показано, как использовать двоеточие (:) оператор, чтобы сгенерировать последовательности 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дниминуты, и seconds функции, чтобы создать datetime и последовательности длительности с помощью других модулей даты и времени фиксированной длины. Создайте последовательность значений длительности между 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

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

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

Создайте скаляр datetime, представляющий 1 ноября 2013 в 8:00.

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

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

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

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

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

Каждый datetime в 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 или значения длительности между двумя заданными конечными точками.

Создайте последовательность пяти равномерно распределенных дат между 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 должен произойти вначале месяц в конкретный день недели, или в конце минуты. Получившиеся значения datetime в последовательности не обязательно равномерно распределены.

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

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

t1 = datetime('today','Format','dd-MMM-yyyy eee')
t1 = datetime
   29-Jan-2020 Wed

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

t = dateshift(t1,'dayofweek',2,1:3)
t = 1x3 datetime
   03-Feb-2020 Mon   10-Feb-2020 Mon   17-Feb-2020 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
   29-Jan-2020 11:20:38

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

   29-Jan-2020 11:00:00   29-Jan-2020 12:00:00   29-Jan-2020 13:00:00

Columns 4 through 5

   29-Jan-2020 14:00:00   29-Jan-2020 15:00:00

Предыдущие случаи дат и время

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

t = dateshift(t1,'start','hour',-1:1)
t = 1x3 datetime
   29-Jan-2020 10:00:00   29-Jan-2020 11:00:00   29-Jan-2020 12:00:00

Смотрите также

|