添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Matlab用三种格式来表示日期与时间
转自http://www.360doc.com/content/14/1206/16/16363452_430844776.shtml
(1)双精度型日期数字:一个日期型数字代表从公元0年到某一日期的的天数,例如,2008年8月26日夜时0点钟被表示为733646,而这同一天的中午12点就被表示为733646.5,也就是说任何一个时刻都可以用一个双精度型数字表示。
(2)不同形式的日期字符串:Matlab定义了28种标准日期格式的字符串。
(3)数值型的日期向量:用一个6元数组来表示一个日期时间,例如,[2008 8 26 12 5 0]表示2008年8月26日12点05分0秒;用一个3元数组来表示一个日期,例如,[2008 8 26]表示2008年8月26日。

用日期数字表示日期使计算机更容易计算,但是不直观,因此Matlab提供了许多函数来实现三种日期格式之间的转化。
(1)datestr: 实现将日期数字和日期向量转化为日期字符串,可以在Matlab命令窗口中输入help datestr来查看关于datestr的 用法。
(2)datenum: 实现将日期字符串和日期向量转化为日期数字,可以在Matlab命令窗口中输入help datenum来查看关于datenum的用法。
(3)datevec: 实现将日期数字和日期字符串转化为日期向量,可以在Matlab命令窗口中输入来help datevec查看关于datevec的用法。

Matlab中其他常用的函数:
(1)clock:将当前时间和日期返回到一个(6元)数组中。
>> T = clock
T =
2008    8    26    12     31    32.75
注:直接输出clock时,可能会以科学计数法的方式输出, clock
ans =
1.0e+003 *
2.0100    0.0010    0.0280    0.0190    0.0280    0.0296
用fix(clock) 则能输出易于阅读的形式 fix(clock)
ans =
2010           1          28          19          28          48

(2)now:将当前时间和日期以一个双精度型日期数字返回。
>> t = now
t =
7.3365e+005
(3)
date:将当前时间和日期以dd-mmm-yyyy格式的字符串返回。
>> d = date
d =
26-Aug-2008
(4)weekday:返回一个日期数字或一个日期字符串的星期及一个星期中的第几天。
>> [d,w]=weekday('26-Aug-2008')
d =
3
w =
Tue
>> [d,w]=weekday(733646)
d =
3
w =
Tue
(5)eomday:返回一个月的最后一天。
>> eomday(2008,2)
ans =
29
(6)calendar:对用户要求的任何一个月生一个日历并显示在命令窗口中,或将其放在一个6×7的矩阵中。
>> calendar(2008,8)
Aug 2008
S     M    Tu     W    Th     F     S
0     0     0     0     0     1     2
3     4     5     6     7     8     9
10    11    12    13    14    15    16
17    18    19    20    21    22    23
24    25    26    27    28    29    30
31     0     0     0     0     0     0
>> c=calendar(2008,8)
c =
0     0     0     0     0     1     2
3     4     5     6     7     8     9
10    11    12    13    14    15    16
17    18    19    20    21    22    23
24    25    26    27    28    29    30
31     0     0     0     0     0     0
(7)tic,toc:函数tic和toc被用来对一组Matlab运算进行计时。Tic启动一个秒表,toc停止这个秒表并计算出所经历的时间。
>> tic;plot(rand(50,5));toc
Elapsed time is 3.302510 seconds.
(8)cputime:函数cputime返回用秒表示的、自从当前的Matlab周期启动之后Matlab所占用的CPU时间。
(9)datetick:用来自动完成对数据进行图形显示并且用日期或时间字符串来作坐标的标签。
>> y=[1998 1998 1999*ones(1,12)];
>> m=[11 12 (1:12)];
>> s=[1.1 1.3 1.2 1.4 1.6 1.5 1.7 1.6 1.8 1.3 1.9 1.7 1.6 1.95];
>> bar(datenum(y,m,1),s)
>> datetick('x','mmmyy')
>> ylabel('$ Million')
>> title('Figure 15.2:Monthly Sales') 常用的日期操作函数 datestr(d,f) 将日期数字转换为字符串
datenum(
str,f) 将字符串转换为日期数字
datevec(str) 日期字符串转换向量
weekday(d) 计算星期数
eomday(yr,mth) 计算指定月份最后一天
calendar(str) 返回日历矩阵
clock 当前日期和时间的日期向量
date 当前日期字符串
now 当前日期和时间的序列数

matlab中如何获取当前日期时间函数的具体应用如下:

一、date ,now,clock

1.date:按照日期字符串格式返回当前系统日期
2.now:按照连续的日期数值格式返回当前系统时间
3.clock:按照日期向量格式返回当前系统时间
>> date,now,clock

ans =

09-Apr-2011
ans =

7.3460e+005
ans =

1.0e+003 *

2.0110    0.0040    0.0090    0.0170    0.0430    0.0470

二、year,month,day,hour,minute,second
matlab中分别使用year,month,day,hour,minute,second从上面讲到的字符串和连续型日期时间格式中提取年月日时分秒等信息
>>[year(date),year(now)]
ans =
2011        2011
注意:上面的函数是没法从向量型日期时间格式中正确读取上述信息的
>>year(clock)
ans =
5     0     0     0     0     0
三、Matlab中处理日期与时间的函数详解

http://eelab.tsinghua.edu.cn/czzheng/blog/10-01/184048_13d5c.html

1.now 返回当前的日期值(这个数的整数部分表示从公元0年1月1日到该日的天数,小数部分则表示具体的时刻)
eg.
t=now
t =7.3354e+005

2.datestr 日期转换成字符形式

调用格式 datestr(date,dateform) date为要转换的日期值,dateform为日期格式参数(具体参数值可通过 help datestr查看帮助)
dateform参数说明
DATEFORM number    DATEFORM string          Example
================================================================
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-96
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-1996
28              'mmmyyyy'                 Mar2000
29 (ISO 8601) 'yyyy-mm-dd'              2000-03-01
30 (ISO 8601) 'yyyymmddTHHMMSS'         20000301T154517
31              'yyyy-mm-dd HH:MM:SS'     2000-03-01 15:45:17eg.
>> t=now;datestr(t,0)ans =09-May-2008 21:07:233.date将字符串转换成日期值
调用语法:date(year,month,day)
datenum(year,month,day,hour,minute,second)
eg.>> t=now;datestr(t,0)ans =09-May-2008 21:07:23>> datenum(ans)
ans =7.3354e+005>>4.datevec将datestr中指定的格式日期字符转换成包含日期分量的数值向量
eg.
>>c=datevec('09-May-2008 21:07:23')c =         2008            5            9           21            7           23
5.weekday 可从一个日期值或字符串中找出具体的日子和星期。
eg.
>> [d,w]=weekday( 7.3354e+005)d =      2
w =Mon>>[d,w]=weekday('21-Dec-2008')d =      1
w =Sun6.eomday 返回任何一个月最后一天是几号
调用语法:eomday(year,month) 因为闰年的存在故需要year这个参数。
eg.>> eomday(2008,2)ans =     29>> eomday(2007,2)ans =     287.calendar 生成指定月份的日历。
eg
>> calendar(date)
May 2008
S      M     Tu      W     Th      F      S
0      0      0      0      1      2      3
4      5      6      7      8      9     10
11     12     13     14     15     16     17
18     19     20     21     22     23     24
25     26     27     28     29     30     31
0      0      0      0      0      0      0
>> calendar(2008,5)
May 2008
S      M     Tu      W     Th      F      S
0      0      0      0      1      2      3
4      5      6      7      8      9     10
11     12     13     14     15     16     17
18     19     20     21     22     23     24
25     26     27     28     29     30     31
0      0      0      0      0      0      0>>
补充:date返回当天日期的字符串
eg.
>> dateans =09-May-20088.tic ,toc 两个结合使用可计算一组matlab操作指令的执行所需时间
eg.
>> tic; plot(rand(500,5));toc
Elapsed time is 0.078000 seconds.
另外Matlab还提供了cputime和etime(具体使用方法可看帮助文档),用来计算一次运算所占cpu时间.
eg.
>>t0=cputime;myoperation;cputime-t0
ans=0.1400
>>t1=clock;myoperation;etime(clock,t1)
ans=11.2800
注:myoperation为用户自定义脚本文件
>> t0=cputimet0 =    53.8125>> t1=cputimet1 =    54.0313>> deltaT=t1-t0deltaT =     0.2188
>> t1=clockt1 =1.0e+003 *     2.0080     0.0050     0.0090     0.0210     0.0460     0.0254>> deltaT=etime(t1,t0)deltaT =     9.9060>>
9.datetick 设一个坐标为时间标签eg.
>> t=(1900:10:1990)';
>> p=[100 200 150 350 200 400 500 100 30 120];
>> plot(datenum(t,1,1),p);
>> datetick('x','yyyy')
>> title('test time tip')

Matlab用三种格式来表示日期与时间转自http://www.360doc.com/content/14/1206/16/16363452_430844776.shtml(1)双精度型日期数字:一个日期型数字代表从公元0年到某一日期的的天数,例如,2008年8月26日夜时0点钟被表示为733646,而这同一天的中午12点就被表示为733646.5,也就是说任何一个时刻都可以用一个双精度型
Matlab 提供 三种 日期 格式 日期 字符串如’1996-10-02’, 日期 序列数如729300(0000年1月1日为1)以及 日期 向量如 1996 10 2 0 0 0,依次为年月日时分秒。 常用的 日期 操作函数 datestr(d,f) 将 日期 数字转换为字符串        datenum(str,f) 将字符串转换为 日期 数字        datevec(str) 日期 字符串转换向量
写这样一个组件的初衷 项目用的是antd的组件,一开始用antd上面的日历组件本来没什么问题,感觉挺好用的,可是某一天需求人员说要求日历只展示一周或半个月,然后我就懵逼了,antd上面的日历组件根本就没有周模式的,只有月和年模式,再说,感觉根本没必要啊,但是用户强烈要求有这个功能,没办法,只能自己写一个了。
MATLAB 非常适合使用 日期 作为图表横坐标,并进行 时间 序列分析。 日期 数据的横坐标 表示 方法在 MATLAB 中比较简单,用户只需要将 日期 数据作为数组输入 MATLAB ,然后在绘图时可以自定义 日期 格式 ,确保图表能够直观清晰地呈现。 MATLAB 中可以用datenum函数将 日期 时间 转化为数字,也可以使用datetime数据类型存储 时间 序列数据。在绘制 日期 横坐标的图表时, MATLAB 提供了许多函数和工具箱,如plot函数、datetick函数等,可使图表横坐标的 日期 信息清晰展示,并且支持自定义 日期 格式 时间 范围。 使用 MATLAB 进行 时间 序列分析需要先确定所需分析的 时间 范围、 时间 间隔和数据类型等。 MATLAB 提供了许多 时间 序列分析函数和工具箱,如time series对象、ARIMA模型分析、回归分析等,可方便用户进行时序数据的分析、预测及模型建立。 总之, MATLAB 适合使用 日期 作为横坐标进行 时间 序列分析及绘制图表,具有简单易用、方便灵活、支持大量函数等优点,使用户能够更加方便地进行时序数据处理和可视化分析。