处理和转换日期
日期的格式
几乎所有财务数据来源于一个时间序列,函数在金融工具箱™广泛date-handling功能。工具箱函数支持日期或日期和时间格式作为特征向金宝app量,datetime数组,或串行数字日期。
日期特征向量文本表示日期和时间,您可以使用多种格式。例如,
“dd-mmm-yyyy HH: MM: SS”
,“dd-mmm-yyyy”
,“mm / dd / yyyy”
所有支持的文本格金宝app式日期字符向量。多数情况下,您使用特征向量(例如日期14 - 9 - 1999
)在处理日期。Datetime数组创建使用
datetime
,是最好的数据类型为代表的时间点。datetime
值有灵活的显示格式和纳秒精度,并且可以考虑时区,夏令时,闰秒。当datetime
对象作为输入其他金融工具箱函数,输入的格式datetime
对象是保存。例如:originalDate = datetime(“现在”,“格式”,“yyyy-MM-dd HH: mm: ss”);%找到下一个营业日b = busdate (originalDate)
b = datetime 2021-05-04 15:59:34
串行日期数字代表一个日历日期的天数,约会了一个固定的基地。在MATLAB®软件,串行日期号码
1
公元0000年1月1日是金融工具箱内部工作串行数字日期(如730377年
)。MATLAB还使用串行时间代表天午夜开始的分数。例如,6点=0.75
连续几天,所以下午6点14 - 9 - 1999
在MATLAB,串行日期号码730377.75
请注意
如果你指定一个两位数,MATLAB假设在100年一年集中在目前的一年。看到函数datenum
为特定的信息。MATLAB内部日期生成没有模糊值处理和计算。但是,只要有可能,使用串行数字或日期特征向量包含四位数的年。
许多金融工具箱函数要求日期作为特征向量,输入参数接受日期datetime数组,或串行数字日期。如果你正在处理几个MATLAB命令行级别的日期,日期特征向量更方便。如果您使用的是金融工具箱函数大量的日期,如大型投资组合或现金流分析,性能提高了如果使用datetime数组或数字串行日期。有关更多信息,请参见在MATLAB代表日期和时间。
日期转换
金融工具箱提供了函数转换日期字符向量或串行日期数字。此外,您可以将特征向量或串行日期数字datetime数组。
日期格式之间转换的函数有:
datedisp |
显示一个数字矩阵特征向量与条目日期格式化的日期。 |
datenum |
将一个日期特征向量转换为串行日期号码。 |
datestr |
将串行日期号码转换为日期特征向量。 |
datetime |
将特征向量或串行日期数字数组创建一个datetime。 |
datevec |
将串行数字或日期特征向量转换为日期向量的元素(年月日小时分钟第二) 。 |
m2xdate |
将MATLAB串行日期号码Excel®串行日期号码。 |
x2mdate |
将微软®Excel连环约会MATLAB串行日期数字。 |
有关更多信息,请参见Datetime数组之间的转换、数字和文本。
Datetime数组之间的转换和特征向量
日期可以是一个特征向量组成的字段与一个特定的日期和时间。有几种方法来表示日期和时间在几个文本格式。例如,所有以下是特征向量代表8月23日,2010 04:35:42点:
23日- 8月- 2010 04:35:06点的周三,8月23日的“08/23/10泰”“8月23日16:35:42.946”
日期特征向量包含字符,单独的字段,如连字符,空间,和结肠这里使用:
d =“23 - 8月- 2010 16:35:42”
将一个或多个日期特征向量datetime
数组的使用datetime
函数。为了获得最佳的性能,指定的格式输入特征向量作为输入datetime
。
请注意
说明符,datetime
用来描述日期和时间格式说明符的不同datestr
,datevec
,datenum
函数接受。
t = datetime (d,“InputFormat”,“dd-MMM-yyyy HH: mm: ss”)
t = 23 - 8月- 2010 16:35:42
虽然日期字符串,d
,datetime
标量,t
类似,他们是不平等的。视图的大小和每个变量的数据类型。
谁dt
类属性名称大小字节d 1 x20的40个字符t 1 x1 121 datetime
把一个datetime
数组使用的特征向量字符
或cellstr
。例如,当前的日期和时间转换为时间戳添加到一个文件的名字。
t = datetime (“现在”,“格式”,“yyyy-MM-dd“T”HHmmss”)
t = 2016 - 12 - 11 - t125628 datetime
S = char (t);文件名= [“myTest_”,年代)
文件名= ' myTest_2016-12-11T125628 '
串行转换日期数字Datetime数组
连续时间可以代表天午夜开始的分数。例如,6点=0.75
连续几天,所以特征向量2003年- 10月31日,下午6点的
在MATLAB是日期的数字731885.75
。
将一个或多个串行数字日期datetime
数组的使用datetime
函数。指定日期号码的类型转换:
t = datetime (731885.75,“ConvertFrom”,“datenum”)
t = datetime 2003年- 10月31日18:00:00
Datetime数组转换为数值
一些MATLAB函数接受数值数据类型而不是datetime值作为输入。这些函数应用于你的日期和时间数据,首先,将datetime值转换为有意义的数字值,然后调用该函数。例如,日志
函数接受双
输入但不datetime
输入。假设你有一个datetime
数组的日期生成的研究或实验。
t = datetime (2014、6、18) + calmonths (1:4)
t = 1×4 datetime数组18 - 2014年7月- 2014年8月18 - - 18 - 2014年9月- 2014年10月18 - -
减去原点的价值。例如,起源的值可以是一个实验开始的一天。
dt = t - datetime (2014、7、1)
dt = 1×4时间数组408:00:00 1152:00:00 1896:00:00 2616:00:00
dt
是一个持续时间
数组中。转换dt
到一个双
数组中的值的单位的年,天,小时,分钟,秒使用年
,天
,小时
,分钟
,或秒
函数,分别。
x =时间(dt)
x = 408 1152 1896 2616
通过双
数组作为输入日志
函数。
日志(y = x)
y = 6.0113 - 7.0493 7.5475 - 7.8694
输入转换datenum
的datenum
函数是重要的金融工具软件的使用效率。datenum
需要一个输入日期在任何一个特征矢量格式,“dd-mmm-yyyy”
,“mm / dd / yyyy”
,或“dd-mmm-yyyy hh: mm: ss.ss”
格式是最常见的。输入日期特征向量可以有六个字段由字母和数字隔开其他字符,这样:
字段是一个整数
1
通过31日
。月字段是一个整数
1
通过12
或一个字母字符向量和至少三个字符。字段是一个非负整数。如果只指定两个数字,那么假设一年躺在100年期内集中在当前的年。如果省略一年,今年是默认的。
小时,分钟和秒字段是可选的。他们是整数用冒号分开或紧随其后
“我”
或“点”
。
例如,如果当前的年份是1999年,那么所有这些日期是等价的:
“17 - 1999年5月- - - - - -”“17 - 99年5月- - - - - -”5月17日的1999年5月17日的“5/17/99”“5/17”
同时,这两种格式表示相同的时间。
“1999年5月- 17 - 18:30“5/17/99/6:30点”
数字仅仅输入的默认格式遵循我们的约定。因此,3/6是3月6日,6月3日。
与datenum
,你可以将日期转换成串行日期格式,将它们存储在一个矩阵变量中,然后通过一个函数的变量。或者,您可以使用datenum
直接在一个函数输入参数列表。
例如,考虑函数bndprice
计算的价格债券到期收益率。首先设置变量的到期收益率,票面利率,和必要的日期。
收益率= 0.07;CouponRate = 0.08;解决= datenum (“17 - 2000年5月- - - - - -”);成熟= datenum (01 - 10月- 2000的);
然后调用函数的变量。
bndprice(产量、CouponRate解决、成熟度)
ans = 100.3503
另外,日期特征向量转换为串行日期数字直接在函数输入参数列表。
bndprice (0.07, 0.08, datenum (“17 - 2000年5月- - - - - -”),…datenum (01 - 10月- 2000的))
ans = 100.3503
bndprice
是一个函数的一个例子旨在检测日期的存在特征向量,使自动转换。等功能的bndprice
、日期特征向量可以直接通过。
bndprice (0.07, 0.08,“17 - 2000年5月- - - - - -”,01 - 10月- 2000的)
ans = 100.3503
代表的决定日期作为特征向量或串行日期数字通常是一个方便的问题。例如,当格式化数据视觉显示或调试date-handling代码,您可以查看日期日期特征向量更容易,因为串行日期数字是难以解释的。交替,串行日期数字只是另一种类型的数值数据,你可以在一个矩阵以及任何其他数值数据,方便操作。
记住,如果你创建一个向量输入日期的特征向量,使用一个列向量,并确保所有的特征向量都是一样的长度。确保特征向量是相同的长度,用空格或零填充特征向量。有关更多信息,请参见特征向量输入。
输出转换datestr
的datestr
将串行日期数字转换为19个不同日期的特征向量输出格式显示日期,时间,或两者兼而有之。“日-月-年”的默认输出日期是一个特征向量,例如,24 - 8月- 2000
。的datestr
函数是用于输出报告做准备。
|
描述 |
---|---|
|
day-month-year小时:分钟:秒 |
|
day-month-year |
|
月/日/年 |
|
月,三个字母 |
|
月,单字母 |
|
月数 |
|
月/日 |
|
天月 |
|
天的星期,三个字母 |
|
天的星期,单一的信 |
|
年,四个数字 |
|
一年,两个数字 |
|
月年 |
|
小时:分钟:秒 |
|
小时:分钟:秒或点 |
|
小时:分钟 |
|
小时:分钟或点 |
|
日历quarter-year |
|
日历季度 |
当前的日期和时间
今天
ans = 736675
现在
ans = 7.3668 e + 05
MATLAB函数日期
返回当前日期的特征向量。
日期
ans = ' 11 - 12月- 2016 '
确定具体日期
金融工具箱提供了许多功能确定具体日期。例如,假设你安排一个每月上周五的会计程序。使用lweekdate
函数返回的日期为2000年。输入参数6
周五指定。
1:12 Fridates = lweekdate (2000);周五= datestr (Fridates)
星期五= 12×11字符数组的28 - 1月- 2000 ' 25 - 2月- 2000 ' 31 - 3月- 2000的28 - 4月- 2000 ' 26日—2000年5月- 30——2000年6月- 7月28 - - 2000”的25 - 8月- 2000年的29 - 9月- 2000年10月27 - - 2000”的24 - 11月- 2000年的29 - 12月- 2000
需要具体日期的另一个例子可能是,你的公司关闭在马丁·路德·金。一天,1月的第三个星期一。您可以使用nweekdate
函数来确定具体日期为2011年到2014年。
MLKDates = nweekdate (3 2 2011:2014 1);MLKDays = datestr (MLKDates)
MLKDays = 4×11字符数组的17 - 1月- 2011 ' 16 - 1月- 2012 ' 21 - 1月- 2013 ' 20 - 1月- 2014
确定假期
占假日和其他非贸易的日子是很重要的,当你检查财务日期。金融工具箱提供了假期
函数,它包含节假日和特殊非贸易的天纽约证券交易所从1950年到2030年,包容性。此外,您可以使用nyseclosures
评估所有已知或预期的闭包的纽约证券交易所从1月1日,1885年,2050年12月31日。nyseclosures
返回一个向量之间的串行日期数字对应市场关闭日期StartDate可以
和EndDate
、包容。
在这个例子中,使用假期
确定标准的假期在2012年下半年。
LHHDates =假期(1 - 7月- 2012的,2012年- 12月31日的);LHHDays = datestr (LHHDates)
LHHDays = 6×11字符数组的04 - 7月- 2012 ' 03 - 9月- 2012年10月29 - - 2012年的30 - 10月- 2012 ' ' 22日- 11月- 2012 ' 25 - 12月- 2012
然后,您可以使用busdate
函数来确定下一个营业日在2012年这些假期。
LHNextDates = busdate (LHHDates);LHNextDays = datestr (LHNextDates)
LHNextDays = 6×11字符数组的05 - 7月- 2012 ' 04 - 9月- 2012 ' 2012年- 10月31日的2012年- 10月31日的23 - 11月- 2012 ' 26 - 12月- 2012
现金流确定日期
确定现金流证券与周期性付款日期,使用cfdates
。这个函数占每年优惠券,日计数的基础上,月底规则。例如,您可以确定一个安全支付的现金流日期四个优惠券每年的最后一天使用一个月实际/ 365
日计数。为此,进入结算日期、到期日和参数期
,基础
,EndMonthRule
。
PayDates = cfdates (的14 - 3月- 2000,30 - 11月- 2001 '、4、3、1);发薪日= datestr (PayDates)
发薪日= 7×11字符数组的31日——2000年5月——31日- 8月- 2000年的30 - 11月- 2000”2001年- 2月28日的“31日——2001年5月——”31日- 8月- 2001年的30 - 11月- 2001 '
另请参阅
datedisp
|datenum
|datestr
|m2xdate
|x2mdate
|datetime
|datevec
|格式
|日期
|lweekdate
|nweekdate
|假期
|nyseclosures
|busdate
|cfdates
|addBusinessCalendar
相关的例子
更多关于
- Microsoft Excel和MATLAB之间转换日期(电子表格链接)