calendarDuration

Отрезки времени в календарных модулях переменной длины

Описание

Значения в календарных массивах длительности представляют прошедшее время в календарных модулях переменной длины. Например, номер дней за месяц зависит от конкретного месяца года. Вычисления с календарной длительностью составляют изменения летнего времени и високосные годы. Используйте календарные массивы длительности, чтобы упростить вычисления на массивах datetime, которые включают календарные модули, такие как дни и месяцы.

Создание

Можно создать календарные массивы длительности, которые имеют модули требуемого времени с помощью calyears, calquarters, calmonths, calweeks и функций caldays. Например, чтобы создать массив, который имеет прошедшие времена 1, 2, и 3 календарных месяца, используют функцию calmonths.

M = calmonths(1:3)
M = 

  1×3 calendarDuration array

   1mo   2mo   3mo

Также можно создать календарный массив длительности с помощью функции calendarDuration, описанной ниже.

Синтаксис

L = calendarDuration(Y,M,D)
L = calendarDuration(Y,M,D,H,MI,S)
L = calendarDuration(Y,M,D,T)
L = calendarDuration(X)
L = calendarDuration(___,'Format',displayFormat)

Описание

пример

L = calendarDuration(Y,M,D) создает массив календарной длительности от числовых массивов Y, M и D, содержа номер лет, месяцев и дней, соответственно.

L = calendarDuration(Y,M,D,H,MI,S) также включает часы, минуты и секунды, заданные H, MI и S, соответственно.

пример

L = calendarDuration(Y,M,D,T) создает массив календарной длительности от числовых массивов, содержащих номер лет, месяцев, и дней и массива длительности T, содержащий прошедшие времена.

L = calendarDuration(X) создает массив календарной длительности из числовой матрицы.

пример

L = calendarDuration(___,'Format',displayFormat) дополнительно задает displayFormat как значение свойства Format L. Свойство Format изменяет отображение L, но не его значений. Можно использовать этот синтаксис с любым из аргументов от предыдущих синтаксисов.

Входные параметры

развернуть все

Годы, месяцы и дни, заданные как числовые массивы. Эти массивы или должны быть одного размера, или любой может быть скаляром. Y,M,D должен содержать только целочисленные значения.

Определение значений месяца, больше, чем 12, эквивалентно определению многих лет плюс много месяцев. Например, 25 месяцев равны 2 годам и 1 месяцу. Однако дневные значения не эквивалентны многим месяцам, потому что номер дней за месяц не фиксируется и не может быть определен, пока вы не добавляете календарную длительность к определенному datetime.

Пример: L = calendarDuration (2,10,24) возвращает календарную длительность 2 лет, 10 месяцев и 24 дней.

Часы, минуты и секунды, заданные как числовые массивы. Эти массивы или должны быть одного размера, или любой может быть скаляром. Задайте доли секунды как часть S. H и массивы MI должны содержать только целочисленные значения.

Определение значений месяца, больше, чем 12, эквивалентно определению многих лет плюс много месяцев. Например, 25 месяцев равны 2 годам и 1 месяцу. Мелкие значения, больше, чем 60, переносят на многие часы. Вторые значения, больше, чем 60, переносят на многие минуты. Однако дневные значения не эквивалентны многим месяцам, потому что номер дней за месяц не фиксируется и не может быть определен, пока вы не добавляете календарную длительность к определенному datetime. Точно так же значения часа не эквивалентны многим календарным дням.

Пример: L = calendarDuration (2,10,24,12,45,07.451) возвращает календарную длительность 2 лет, 10 месяцев, 24 дней, 12 часов, 45 минут и 7,451 секунд.

Прошедшие времена, заданные как массив длительности. T или должен быть одного размера как Y, M и входные параметры D или быть скаляром.

Пример: T = часы (5); L = calendarDuration (2,10,24, T) добавляет длительность 5 часов к L.

Годы, месяцы, дни, и опционально, времена, заданные как числовая матрица. X должен иметь или три или шесть столбцов. Первые три столбца содержат номер лет, месяцев и дней, соответственно. Если X имеет шесть столбцов, то последние три столбца содержат номер часов, минут и секунд, соответственно.

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

Пример: L = calendarDuration ([2 10 24]) возвращает календарную длительность 2 лет, 10 месяцев и 24 дней.

Пример: L = calendarDuration ([2 10 24 12 45 07.451]) возвращает календарную длительность 2 лет, 10 месяцев, 24 дней, 12 часов, 45 минут и 7,451 секунд.

Свойства

развернуть все

Формат отображения на календарное время, заданное как комбинация символов y, q, m, w, d и t, в том порядке. Формат должен включать m, d и t.

СимволМодульНеобходимый?
yГодынет
qЧетверти (множители 3 месяцев)нет
mМесяцыда
wНеделинет
dДнида
tВремя (часы, минуты и секунды)да

Чтобы задать количество цифр, отображенных для долей секунды, используйте функцию format.

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

Пример: L. Формат = 'yqmdt' отображает каждое значение в L как номер календарных лет, четвертей, месяцы и дни, наряду с его компонентом времени.

Примеры

свернуть все

Создайте стоимость datetime.

D = datetime(2017,7,1)
D = datetime
   01-Jul-2017

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

Во-первых, создайте массив календарных месяцев с помощью функции calmonths.

C = calmonths(0:3)
C = 1x4 calendarDuration array
   0mo   1mo   2mo   3mo

Затем добавьте D и C. Поскольку C является календарным массивом длительности, эта операция составляет то, что месяцы могут иметь различные числа дней.

M = D + C
M = 1x4 datetime array
   01-Jul-2017   01-Aug-2017   01-Sep-2017   01-Oct-2017

Из-за високосных годов и Летнего времени, календарные годы, месяцы и дни могут иметь переменные длины. Чтобы разместить эти переменные отрезки времени, используйте календарные массивы длительности для арифметических операций на массивах datetime.

L = calendarDuration(1,3,15)
L = calendarDuration
   1y 3mo 15d

Создайте числовой массив, представляющий числа дней.

D = [1 3;4 2]
D = 2×2

     1     3
     4     2

Создайте массив длительности, представляющий прошедшие времена в часах. Один элемент задает 25 часов, который более длинен, чем один день.

T = hours([1 2; 25 12])
T = 2x2 duration array
    1 hr    2 hr
   25 hr   12 hr

Создайте календарный массив длительности. Задайте входные параметры D, T и скалярные значения в течение года и месяца. Второй входной параметр, 13, задает больше месяцев, чем существует через один год.

L = calendarDuration(1,13,D,T)
L = 2x2 calendarDuration array
    2y 1mo 1d 1h 0m 0s    2y 1mo 3d 2h 0m 0s
   2y 1mo 4d 25h 0m 0s   2y 1mo 2d 12h 0m 0s

Значения месяца, больше, чем 12, переносят на годы в отображении. Однако значения часа, больше, чем 24, не переносят на дни в отображении. Из-за Летнего времени, номер часов за календарный день является не обязательно 24 часами.

Создайте календарный массив длительности и задайте формат, который отображает значения с точки зрения месяцев, недель, дней и времени.

L = calendarDuration(1,1,5:9,'Format','mwdt')
L = 1x5 calendarDuration array
      13mo 5d      13mo 6d      13mo 1w   13mo 1w 1d   13mo 1w 2d

Поскольку формат не включает 'y' в течение многих лет, входных значений 1 года и отображения 1 месяца как их сумма, 13mo. В то время как 't' должен быть задан, компонент времени не отображен, если часы, минуты и секунды являются всем нулем.

Советы

  • Для получения дополнительной информации о функциях, которые принимают или возвращают календарные массивы длительности, смотрите Даты и Время.

  • Когда вы добавляете массив calendarDuration, который содержит больше чем один модуль к datetime, MATLAB® всегда добавляет большие модули сначала. Если t является datetime, то эта команда:

    t + calendarDuration(1,2,3)
    эквивалентен:
    t + calyears(1) + calmonths(2) + caldays(3)

Расширенные возможности

Введенный в R2014b

Была ли эта тема полезной?