exponenta event banner

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

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

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

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

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

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

Пример: T = hours(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.Format = 'yqmdt' отображает каждое значение в L количество календарных лет, кварталов, месяцев и дней вместе с компонентом времени.

Примеры

свернуть все

Создайте значение datetime.

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

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

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

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

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

M = D + C
M = 1x4 datetime
   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
    1 hr    2 hr
   25 hr   12 hr

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

L = calendarDuration(1,13,D,T)
L = 2x2 calendarDuration
    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
      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