1. 程式人生 > >Matlab中處理日期與時間的函數

Matlab中處理日期與時間的函數

html num 查看 格式 del 需要 log 但是 獲取

Matlab用三種格式來表示日期與時間

(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中處理日期與時間的函數詳解

Matlab用三種格式來表示日期與時間
(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‘)

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中處理日期與時間的函數