日期转换
Financial Toolbox 提供了可将日期字符向量与日期序列值进行相互转换的函数。此外,您还可以将字符向量或日期序列值转换为日期时间数组。
用于转换日期格式的函数包括:
datedisp
|
显示日期条目格式化为日期字符向量的数字矩阵。
|
datenum
|
将日期字符向量转换为日期序列值。
|
datestr
|
将日期序列值转换为日期字符向量。
|
datetime
|
将日期字符向量或日期序列值转换为日期时间数组。
|
datevec
|
将日期序列值或日期字符向量转换为包含
[Year Month Day Hour Minute Second]
元素的日期向量。
|
m2xdate
|
将 MATLAB 日期序列值转换为 Excel
®
日期序列值。
|
x2mdate
|
将 Microsoft
®
Excel 日期序列值转换为 MATLAB 日期序列值。
|
有关详细信息,请参阅
Convert Between Text and datetime or duration Values
。
在日期时间数组和字符向量之间转换
日期可以是由与特定日期时间相关的字段组成的字符向量。可以使用几种文本格式来表示日期时间。例如,以下所有字符向量都表示 2010 年 8 月 23 日下午 04:35:42:
'23-Aug-2010 04:35:06 PM'
'Wednesday, August 23'
'08/23/10 16:35'
'Aug 23 16:35:42.946'
日期字符向量包括用于分隔字段的字符,例如此处使用的连字符、空格和冒号:
使用
datetime
函数将一个或多个日期字符向量转换为
datetime
数组。为了获得最佳性能,请将输入字符向量的格式指定为
datetime
的输入。
注意
datetime
用于描述日期时间格式的设定符不同于
datestr
、
datevec
和
datenum
函数接受的设定符。
日期字符串
d
与
datetime
标量
t
虽然看起来相似,却并不相等。查看每个变量的大小和数据类型。
Name Size Bytes Class Attributes
d 1x20 40 char
t 1x1 121 datetime
将
datetime
数组转换为使用
char
或
cellstr
的字符向量。例如,将当前日期时间转换为时间戳以追加到文件名中。
t =
datetime
2016-12-11T125628
filename =
'myTest_2016-12-11T125628'
将日期序列值转换为日期时间数组
时间序列可以表示从午夜开始的小数天数。例如,下午 6 点等于以序列表示的
0.75
天,因此 MATLAB 中的字符向量
'31-Oct-2003, 6:00 PM'
就是日期数字
731885.75
。
使用
datetime
函数将一个或多个日期序列值转换为
datetime
数组。指定要转换的日期数字的类型:
t =
datetime
31-Oct-2003 18:00:00
将日期时间数组转换为数值
一些 MATLAB 函数接受数值数据类型但不接受日期时间值作为输入。要将这些函数应用于日期时间数据,请先将日期时间值转换为有意义的数值,然后调用函数。例如,
log
函数接受
double
输入,但不接受
datetime
输入。假设您有一个
datetime
数组,其中的日期跨越了一项研究或试验的整个过程。
t =
1×4 datetime array
18-Jul-2014 18-Aug-2014 18-Sep-2014 18-Oct-2014
减去原点值。例如,原点值可以是试验的开始日期。
dt =
1×4 duration array
408:00:00 1152:00:00 1896:00:00 2616:00:00
dt
是一个
duration
数组。分别使用
years
、
days
、
hours
、
minutes
或
seconds
函数,将
dt
转换为以年、天、小时、分钟或秒为单位的
double
数组。
将
double
数组作为输入传递给
log
函数。
y =
6.0113 7.0493 7.5475 7.8694
使用
datenum
进行输入转换
datenum
函数对于高效使用 Financial Toolbox 软件非常重要。
datenum
接受多种格式的输入日期字符向量,其中
'dd-mmm-yyyy'
、
'mm/dd/yyyy'
或
'dd-mmm-yyyy, hh:mm:ss.ss'
格式是最常见的。输入日期字符向量最多可以有六个由字母和数字(字母和数字之间由任何其他字符分隔)组成的字段,例如:
-
日期字段的取值范围为
1
到
31
之间的整数。
-
月份字段可以是
1
到
12
之间的整数,也可以是至少三个字符的字母字符向量。
-
年份字段是一个非负整数。如果只指定两个数字,则年份被视为处于以当前年份为中心的 100 年范围内。如果未指定年份,则默认为当前年份。
-
小时、分钟和秒字段是可选的。它们是用冒号分隔或后跟
'am'
或
'pm'
的整数。
例如,如果当前年份是 1999 年,则以下所有日期都是等效的:
此外,这两种格式表示的是同一时间。
纯数字输入的默认格式遵循美国惯例。因此,3/6 表示 3 月 6 日,而非 6 月 3 日。
使用
datenum
,您可以将日期转换为日期序列格式,将它们存储为矩阵变量,然后将该变量传递给函数。或者,您也可以直接在函数输入参数列表中使用
datenum
。
例如,假定使用
bndprice
函数在给定到期收益率的情况下计算债券价格。首先为到期收益率、息票率和必要日期设置变量。
然后使用这些变量调用该函数。
或者,直接在函数输入参数列表中将日期字符向量转换为日期序列值。
bndprice
是一个用于检测是否存在日期字符向量并自动进行转换的函数示例。对于
bndprice
之类的函数,可直接传递日期字符向量。
将日期表示为日期字符向量或日期序列值通常是为了方便起见。例如,为可视显示或调试日期处理代码而格式化数据时,您可以更轻松地将日期视为日期字符向量,因为日期序列值难以解释。另外,日期序列值只是另一种数值数据,您可以将其与任何其他数值数据一起放在矩阵中以便于操作。
请记住,如果您创建由输入日期字符向量组成的向量,请使用列向量并确保所有字符向量的长度相同。要确保字符向量的长度相同,请用空格或零填充字符向量。有关详细信息,请参阅
字符向量输入
。
使用
datestr
进行输出转换
datestr
函数将日期序列值转换为显示日期、时间或两者的 19 种不同日期字符向量输出格式之一。日期的默认输出是日-月-年字符向量,例如
24-Aug-2000
。
datestr
函数对于准备输出报告非常有用。
datestr
格式
|
描述
|
01-Mar-2000 15:45:17
|
日-月-年 时:分:秒
|
01-Mar-2000
|
日-月-年
|
03/01/00
|
月/日/年
|
Mar
|
月(三个字母)
|
M
|
月(单字母)
|
3
|
月份
|
03/01
|
月/日
|
1
|
日期
|
Wed
|
星期几(三个字母)
|
W
|
星期几(单字母)
|
2000
|
年份(四位数)
|
99
|
年份(两位数)
|
Mar01
|
月年
|
15:45:17
|
时:分:秒
|
03:45:17 PM
|
时:分:秒(上午或下午)
|
15:45
|
时:分
|
03:45 PM
|
时:分(上午或下午)
|
Q1-99
|
日历季度-年
|
Q1
|
日历季度
|