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

Последовательность значений 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 array
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 array
   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 array
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, чтобы создать datetime и последовательности длительности с помощью других модулей даты и времени фиксированной длины. Создайте последовательность значений длительности между 0 и 3 минутами, постепенно увеличенными на 30 секунд.

d = 0:seconds(30):minutes(3)
d = 1x7 duration array
     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 array
   24:00:00   25:00:00   24:00:00   24:00:00

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

t = t1:days(1):t2
t = 1x5 datetime array
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 array
   24:00:00   24:00:00   24:00:00   24:00:00

Целочисленный размер шага

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

t = t1:1:t2
t = 1x5 datetime array
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 array
   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 array
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 array
   1mo   1mo   1mo   1mo

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

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

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

t = datetime(2014,1,31) + calmonths(0:11)
t = 1x12 datetime array
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 array
   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 array
   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
   21-Feb-2019 Thu

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

t = dateshift(t1,'dayofweek',2,1:3)
t = 1x3 datetime array
   25-Feb-2019 Mon   04-Mar-2019 Mon   11-Mar-2019 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 array
   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 array
   30-Apr-2014   31-May-2014   30-Jun-2014

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

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

Даты не равномерно распределены.

Другие модули дат и время

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

t1 = datetime('now')
t1 = datetime
   21-Feb-2019 20:58:19

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

   21-Feb-2019 20:00:00   21-Feb-2019 21:00:00   21-Feb-2019 22:00:00

Columns 4 through 5

   21-Feb-2019 23:00:00   22-Feb-2019 00:00:00

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

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

t = dateshift(t1,'start','hour',-1:1)
t = 1x3 datetime array
   21-Feb-2019 19:00:00   21-Feb-2019 20:00:00   21-Feb-2019 21:00:00

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

|