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. The Format свойство изменяет отображение L но не ее значения. Можно использовать этот синтаксис с любым из аргументов из предыдущих синтаксисов.

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

расширить все

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

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

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

Часы, минуты и секунды, заданные как числовые массивы. Эти массивы должны быть одного размера, или любой может быть скаляром. Задайте дробные секунды как часть S. The 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 = 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