Этот пример показывает, как использовать двоеточие (:) оператор, чтобы сгенерировать последовательности 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