Main Content

yearfrac

计算日期之间的天数占全年的比例

说明

示例

YearFraction = yearfrac(StartDate,EndDate,Basis) 使用给定的计日 Basis 计算并返回日期 StartDateEndDate 之间的天数占全年的比例(以年为单位)。

一年中的天数(365 天或 366 天)等于 StartDate 之后日历年的天数。如果 EndDate 早于 StartDate,则 YearFraction 为负。

指定的所有参量必须是与 M×NUMINST 兼容的矩阵或标量参量。

示例

全部折叠

给定 Basis0Basis1,计算这两种情况下的 yearfrac

Basis0 定义 StartDateEndDate

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

Basis1 定义 StartDateEndDate

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

Basis0 计算 StartDate 后的日历年是闰年情况下的 yearfrac

Basis0 定义 StartDateEndDate

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

3 月 14 日到 9 月 14 日之间有 184 天,且 StartDate 后的日历年是闰年,因此 yearfrac 返回 184/366 = 0.5027。

使用 actual/actual basis 计算 '31 -Jul-2015' 和 '30 -Sep-2015' 之间的天数占全年的比例:

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

对于 actual/actual basis,天数占全年比例的计算公式如下:

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

从 2015 年 7 月 31 日到 2015 年 9 月 30 日之间有 61 天。由于下一年是闰年,因此 2015 年 7 月 31 日到 2016 年 7 月 31 日之间有 366 天。因此,61/366,正好是 1/6。因此,在这种情况下,按 6 个月期间计算,间隔天数所占比例的预期结果正好是 2/6。

使用 Basis 值 12 来计算日期范围跨越闰年和非闰年时的 yearfrac。输出 YearFractionStartDateEndDate 之间的天数占全年的比例(以年为单位)。

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

给定 Basis 值为 9 并使用日期时间指定 StartDateEndDate,计算此情况下的 yearfrac

yearfrac(datetime(2000,1,1), datetime(2001,1,1), 9)
ans = 1.0167

输入参数

全部折叠

开始日期,指定为使用日期时间数组、字符串数组或日期字符向量的标量或 M×N 向量。

注意

StartDateEndDateBasis 向量的维度必须一致。

为了支持现有代码,yearfrac 还接受将日期序列值作为输入,但不推荐使用它们。

数据类型: char | string | datetime

结束日期,指定为使用日期时间数组、字符串数组或日期字符向量的标量或 M×N 向量。

注意

EndDateStartDateBasis 向量的维度必须一致。

为了支持现有代码,yearfrac 还接受将日期序列值作为输入,但不推荐使用它们。

数据类型: char | string | datetime

每组日期的计日基数,指定为 013 之间的一个标量,或由这些值组成的 M×N 矩阵。

注意

BasisStartDateEndDate 矩阵的维度必须一致。

.

  • 0 = actual/actual(默认)

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (BMA)

  • 5 = 30/360 (ISDA)

  • 6 = 30/360 (European)

  • 7 = actual/365 (Japanese)

  • 8 = actual/actual (ICMA)

  • 9 = actual/360 (ICMA)

  • 10 = actual/365 (ICMA)

  • 11 = 30/360E (ICMA)

  • 12 = actual/365 (ISDA)

  • 13 = BUS/252

有关详细信息,请参阅Basis

数据类型: single | double

输出参量

全部折叠

StartDateEndDate 之间的实际间隔(以年为单位),以标量或 M×N 矩阵形式返回。

详细信息

全部折叠

yearfracdate2time 之间的差别

yearfracdate2time 之间的差别是,date2time 将完整周期计为一个整数,即使这些周期中的实际天数不同也是如此。yearfrac 不计算完整周期。

例如,

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

ans =

    1.0167

对于 Basis9 (ACT/360 ICMA),yearfrac 计算 366/360 = 1.0167。因此,即使日期具有相同的月份和日期(年份中的差值为 1),返回值也可能不完全等于 1。另一方面,date2time 计算一个整年周期:

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

ans =

     1

版本历史记录

在 R2006a 之前推出

全部展开