Этот пример показывает, как использовать двоеточие (:) оператор, чтобы сгенерировать последовательности 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
Этот пример показывает, как использовать функцию dateshift, чтобы сгенерировать последовательности дат и время, где каждый экземпляр соблюдает правило, относящееся к календарному модулю или модулю времени. Например, каждый datetime должен произойти вначале месяц в конкретный день недели, или в конце минуты. Получившиеся значения datetime в последовательности не обязательно равномерно распределены.
Даты в определенный день недели
Сгенерируйте последовательность дат, состоящих из следующих трех случаев понедельника. Во-первых, задайте сегодняшнюю дату.
t1 = datetime('today','Format','dd-MMM-yyyy eee')
t1 = datetime
21-Aug-2018 Tue
Первый входной параметр к dateshift всегда является массивом datetime, от которого вы хотите сгенерировать последовательность. Задайте 'dayofweek' как второй входной параметр, чтобы указать, что значения datetime в выходной последовательности должны упасть в определенный день недели. Можно задать день недели или номером или по наименованию. Например, можно задать в понедельник или как 2 или как 'Monday'.
t = dateshift(t1,'dayofweek',2,1:3)t = 1x3 datetime array
27-Aug-2018 Mon 03-Sep-2018 Mon 10-Sep-2018 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-Aug-2018 18:44:51
t = dateshift(t1,'start','hour',0:4)
t = 1x5 datetime array
Columns 1 through 3
21-Aug-2018 18:00:00 21-Aug-2018 19:00:00 21-Aug-2018 20:00:00
Columns 4 through 5
21-Aug-2018 21:00:00 21-Aug-2018 22:00:00
Предыдущие случаи дат и время
Сгенерируйте последовательность значений datetime, начинающихся в предыдущий час. Отрицательные целые числа в последнем входном параметре к dateshift соответствуют значениям datetime ранее, чем t1.
t = dateshift(t1,'start','hour',-1:1)
t = 1x3 datetime array
21-Aug-2018 17:00:00 21-Aug-2018 18:00:00 21-Aug-2018 19:00:00