yearfrac

Часть года между датами

Описание

пример

YearFraction = yearfrac(StartDate,EndDate,Basis) возвращает часть, в годах, на основе номера дней между датами StartDate и EndDate использование данного дневного количества Basis.

Номер дней через год (365 или 366) равен номеру дней в календарный год после StartDate. Если EndDate ранее, чем StartDate, YearFraction отрицательно.

Все заданные аргументы должны быть количеством инструментов (NUMINST- 1) или (1- NUMINST) приспосабливание векторам или скалярным аргументам.

Примеры

свернуть все

Учитывая Basis из 0 и Basis из 1, вычислите yearfrac.

Задайте StartDate и EndDate использование Basis из 0.

YearFraction = yearfrac('14 mar 01', '14 sep 01', 0)
YearFraction = 0.5041

Задайте StartDate и EndDate использование Basis из 1.

YearFraction = yearfrac('14 mar 01', '14 sep 01', 1)
YearFraction = 0.5000

Учитывая Basis из 0, вычислите yearfrac когда календарь после StartDate находится в високосный год.

Задайте StartDate и EndDate использование Basis из 0.

yearFraction = yearfrac(' 14 mar 03', '14 sep 03', 0)
yearFraction = 0.5027

Существует 184 дня между 14 марта и 14 сентября, и календарный год после StartDate високосный год, таким образом, yearfrac возвращает 184/366 = 0.5027.

Получить часть года между '31 июля 2015' и '30 сентября 2015' с помощью фактического/фактического базиса:

yearfrac('31-Jul-2015', '30-Sep-2015', 0)*2
ans = 0.3333

Для фактического/фактического базиса часть года вычисляется как:

(Actual Days between Start Date and End Date)/(Actual Days between Start Date and exactly one year after Start Date)

Существует 61 день между 31 июля 2015 и 30 сентября 2015. Поскольку следующий год является високосным годом, существует 366 дней между 31 июля 2015 и 31 июля 2016. Так, существует 61/366, который является точно 1/6. Так, учитывая это, точно 2/6 является ожидаемым результатом для части шестимесячного периода.

Используйте Basis из 12, чтобы вычислить yearfrac когда части диапазона дат находятся в високосный год и в невисокосный год. Выход YearFraction часть, в годах, на основе номера дней между StartDate и EndDate.

YearFraction = yearfrac('1-Jan-2016','30-Jan-2017',12)
YearFraction = 1.0795

Учитывая Basis из 9, вычислите yearfrac когда StartDate и EndDate заданы с помощью массивов datetime.

yearfrac(datetime('1-Jan-2000','Locale','en_US'), '1/1/2001', 9)
ans = 1.0167

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

свернуть все

Дата начала в виде N- 1 или 1- N вектор с помощью последовательных чисел даты, векторов символов даты или массивов datetime.

Типы данных: double | char | datetime

Дата окончания в виде N- 1 или 1- N вектор с помощью последовательных чисел даты, векторов символов даты или массивов datetime.

Типы данных: double | char | datetime

Базис дневного количества для каждого набора дат в виде N- 1 или 1- N вектор из целых чисел со значениями 0 через 13.

  •  0 = фактический/фактический (значение по умолчанию)

  •  1 = 30/360 (СИА)

  •  2 = Фактический/360

  •  3 = Фактический/365

  •  4 = 30/360 (BMA)

  •  5 = 30/360 (ISDA)

  •  6 = 30/360 (европеец)

  •  7 = Фактический/365 (японский язык)

  •  8 = фактический/фактический (ICMA)

  •  9 = Фактический/360 (ICMA)

  •  10 = Фактический/365 (ICMA)

  •  11 = 30/360E (ICMA)

  •  12 = Фактический/365 (ISDA)

  •  13 = ШИНА/252

Для получения дополнительной информации смотрите Базис.

Типы данных: single | double

Выходные аргументы

свернуть все

Вещественные числа, идентифицирующие интервал, в годах, между StartDate и EndDate, возвращенный N- 1 или 1- N вектор.

Больше о

свернуть все

Различие между yearfrac и date2time

Различие между yearfrac и date2time это date2time считает полные периоды в целом целым числом, даже если номер фактических дней в периоды отличается. yearfrac не считает полные периоды.

Например,

yearfrac('1/1/2000', '1/1/2001', 9)

ans =

    1.0167

yearfrac для Basis9 (ACT/360 ICMA) вычисляет 366/360 = 1.0167. Так, даже если даты имеют тот же месяц и дату с различием 1 в году, возвращенное значение не может быть точно 1. С другой стороны, date2time вычисляет один полный год:

date2time('1/1/2000', '1/1/2001', 1, 9)

ans =

     1

Представлено до R2006a