Matlab中的日期和时间

1. Matlab中的三种日期/时间格式

1.1 字符串式(Date String)。

如“14-Apr-2015 10:54:00”,“2015-04-14 10:54”,“2015-04-14 10:54 AM”等等。

具体的格式可以自由定义,但是需要遵从Matlab中的相关规则。

规则1,日期/时间的各组成部分的符号标识(Symbolic Identifier)。

Symbolic Identifier Description Example
yyyy Year in full 1990, 2002
yy Year in two digits 90, 02
QQ Quarter year using letter Q and one digit Q1
mmmm Month using full name March, December
mmm Month using first three letters Mar, Dec
mm Month in two digits 03, 12
m Month using capitalized first letter M, D
dddd Day using full name Monday, Tuesday
ddd Day using first three letters Mon, Tue
dd Day in two digits 05, 20
d Day using capitalized first letter M, T
HH Hour in two digits
(no leading zeros when symbolic identifier AM or PM is used)
05, 5 AM
MM Minute in two digits 12, 02
SS Second in two digits 07, 59
FFF Millisecond in three digits 057
AM or PM AM or PM inserted in date string 3:45:02 PM

可以使用以上标识符自由定义显示出来的字符串式的日期。

规则2,Matlab中预定义的字符串式日期/时间格式,即Matlab中有现成的预定义的(predefined)显示格式,共33种,每一种以一个数字标识(Numeric Identifier)指示,如下表。

Numeric Identifier Date String Format Example
-1 (default) 'dd-mmm-yyyy HH:MM:SS' or 'dd-mmm-yyyy' if'HH:MM:SS'= 00:00:00 01-Mar-2000 15:45:17 or 01-Mar-2000
0 'dd-mmm-yyyy HH:MM:SS' 01-Mar-2000 15:45:17
1 'dd-mmm-yyyy' 01-Mar-2000
2 'mm/dd/yy' 03/01/00
3 'mmm' Mar
4 'm' M
5 'mm' 03
6 'mm/dd' 03/01
7 'dd' 01
8 'ddd' Wed
9 'd' W
10 'yyyy' 2000
11 'yy' 00
12 'mmmyy' Mar00
13 'HH:MM:SS' 15:45:17
14 'HH:MM:SS PM' 3:45:17 PM
15 'HH:MM' 15:45
16 'HH:MM PM' 3:45 PM
17 'QQ-YY' Q1-01
18 'QQ' Q1
19 'dd/mm' 01/03
20 'dd/mm/yy' 01/03/00
21 'mmm.dd,yyyy HH:MM:SS' Mar.01,2000 15:45:17
22 'mmm.dd,yyyy' Mar.01,2000
23 'mm/dd/yyyy' 03/01/2000
24 'dd/mm/yyyy' 01/03/2000
25 'yy/mm/dd' 00/03/01
26 'yyyy/mm/dd' 2000/03/01
27 'QQ-YYYY' Q1-2001
28 'mmmyyyy' Mar2000
29 'yyyy-mm-dd'
(ISO 8601)
2000-03-01
30 'yyyymmddTHHMMSS'
(ISO 8601)
20000301T154517
31 'yyyy-mm-dd HH:MM:SS' 2000-03-01 15:45:17

1.2 向量式(Date Vector)。

日期时间向量是由1*6个双精度型(double-precision)数值组成的一个行向量。其中除“秒”对应的元素可为分数外,其余值均为整型。时间表示为24小时制,无AM/PM表示信息。

日期时间向量中的各元素按如下顺序表示:

year month day hour minute second

如,10:45:07 AM on October 24, 2012 按向量式则为:

[2012 10 24 10 45 07]

1.3 连续日期数(Serial Date Number)。

连续日期数的意义是,一个代表了相对January 0, 0000的天数的数值。注意,该数值不可表示公元前,其负值并不表示公元前而表示相对公元10000-Jan-00前的天数。

比如,数值0表示公元0000年01月00日,数值1表示0000年01月01日,数值1.5表示0000年01月01日12:00:00,2015-04-14 12:00用连续日期数表示为:736068.5000。

当然使用这个数值还有一个问题,就是时区,该数值以ISO 8601下0时区为标准,如果需要转换为当地时间则要加上或减去响应的时区差对应的天数,比如,中国处于东八区,即UTC +08:00时区,那么在此数值上需要加上8/24=0.3333这样一个值,因为提前的八个小时相当于0.3333天。

2. Matlab中各种日期时间格式之间的转换

2.1 转换为连续日期数(to serial date number):datenum

datenum这个函数可以将其他两种形式的日期时间格式转换为连续日期数的形式,语法规则如下:

DateNumber = datenum(DateString)

这个函数将字符串式转换为连续日期数式

DateNumber = datenum(DateString,formatIn)

这个函数将字符串式转换为连续日期数式,同时通过”formatIn“这个变量明确了字符串式的具体形式,”formatIn“变量本身也是一个字符串,须对应1.1中的相关规则

DateNumber = datenum(DateVector)

这个函数将向量式转换为连续日期数式

DateNumber = datenum(Y,M,D)/datenum(Y,M,D,H,MN,S)

这个函数将向量式转换为连续日期数式。同时指定信息完整度,可见最少要完整到天

2.2 转换为向量式(to vector of components):datevec

datevec这个函数可以将其他两种形式的日期时间格式转换为向量式的形式,语法规则如下:

DateVector = datevec(DateNumber)

这个函数将连续日期数式转换为向量式

DateVector = datevec(DateString)

这个函数将字符串式转换为向量式

DateVector = datevec(DateString,formatIn)

这个函数将字符串式转换为向量式,同时通过”formatIn“这个变量明确了字符串式的具体形式

2.3 转换为字符串式(to string format):datestr

datestr这个函数可以将其他两种形式的日期时间格式转换为字符串式的形式,语法规则如下:

DateString = datestr(DateVector)

这个函数将向量式转换为字符串式

DateString = datestr(DateNumber)

这个函数将连续日期数式转换为字符串式

DateString = datestr(___,formatOut)

这个函数将其他形式转换为字符串式,同时通过”formatOut“变量指定转化后的字符串的具体形式,”formatIn“变量本身也是一个字符串,须对应1.1中的相关规则

DateString = datestr(DateStringIn)

这个函数将通过”DateStringIn“变量表示的一种字符串式转换为以”day-month-year hour:minute:second“形式表示的字符串式

DateString = datestr(___,’local’)

这个函数将其他形式转换为字符串式,同时以当前使用的系统日期时间显示标准来显示,如:

 >>datestr(now,'local')

ans =

14-4月-2015 12:39:38

 


本文结束。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据