日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

convert.todatetime指定日期格式_MATLAB的时间与日期

發(fā)布時(shí)間:2024/7/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 convert.todatetime指定日期格式_MATLAB的时间与日期 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

7 ?日期和時(shí)間

MATLAB在2014b版本中將日期和時(shí)間獨(dú)立成了一個(gè)數(shù)據(jù)類型,新的版本中對(duì)于時(shí)間數(shù)據(jù)的處理功能更為強(qiáng)大。比如datetime和duration等函數(shù),可以支持對(duì)時(shí)間的高效計(jì)算、對(duì)比、格式化顯示。對(duì)這類數(shù)組的操作方法和對(duì)普通數(shù)組的操作是基本一致的。下面我們就對(duì)主要的功能進(jìn)行介紹。

7.1 ?創(chuàng)建日期和時(shí)間數(shù)組

存儲(chǔ)日期和時(shí)間信息的最主要形式就是datatime數(shù)組,它支持代數(shù)運(yùn)算、排序、比較、繪圖和格式化顯示。代數(shù)運(yùn)算的結(jié)果通過(guò)duration數(shù)組返回,如果采用基于日歷的函數(shù)進(jìn)行的計(jì)算,那么返回的結(jié)果將是calendarDuration數(shù)組。Matlab提供了以下函數(shù)來(lái)進(jìn)行日期及時(shí)間類型的計(jì)算,請(qǐng)見(jiàn)表3-11 。

表3-11?日期和時(shí)間函數(shù)

函 ???數(shù)

說(shuō) ???明

函 ???數(shù)

說(shuō) ???明

datetime

基于當(dāng)前日期創(chuàng)建時(shí)間數(shù)組,或者將日期字符串或數(shù)據(jù)轉(zhuǎn)換為時(shí)間數(shù)組

yyyymmdd

將MATLAB datetime數(shù)據(jù)類型轉(zhuǎn)化為YYYYMMDD數(shù)值格式

years

年數(shù)長(zhǎng)度

minutes

分鐘數(shù)長(zhǎng)度

days

天數(shù)長(zhǎng)度

seconds

秒數(shù)長(zhǎng)度

hours

小時(shí)數(shù)長(zhǎng)度

duration

由數(shù)值創(chuàng)建duration數(shù)組

calyears

日歷年數(shù)長(zhǎng)度

calweeks

日歷星期數(shù)長(zhǎng)度

calquarters

日歷季度數(shù)長(zhǎng)度

caldays

日歷天數(shù)長(zhǎng)度

calmonths

日歷月數(shù)長(zhǎng)度

calendarDuration

由數(shù)值創(chuàng)建日歷時(shí)間長(zhǎng)度數(shù)組

下面我們舉例來(lái)說(shuō)明如何創(chuàng)建日期和時(shí)間數(shù)組。

【例3-41】??日期時(shí)間數(shù)組創(chuàng)建。

例如,如果我們想要來(lái)表示這樣兩個(gè)日期:June 28, 2014 at 6 a.m和June 28, 2014 at 7 a.m,那么我們可以將這些數(shù)值相應(yīng)的賦值給datetime函數(shù)各元素即可:

>> t = datetime(2014,6,28,6:7,0,0)

t =

???28-Jun-2014 06:00:00 ??28-Jun-2014 07:00:00

如果想要對(duì)數(shù)組中的某一元素進(jìn)行修改,那么只需要將新的數(shù)值賦值給相應(yīng)的元素即可:

>> t.Day = 27:28

t =

???27-Jun-2014 06:00:00 ??28-Jun-2014 07:00:00

如果想要更改數(shù)組的顯示格式,只需要改變Format屬性即可。這一過(guò)程中改變的只是數(shù)據(jù)顯示格式,數(shù)據(jù)本身沒(méi)有任何改動(dòng)。

>> t.Format = 'MMM dd, yyyy'

t =

???Jun 27, 2014 ??Jun 28, 2014

如果你要將一個(gè)datetime數(shù)組減去另一個(gè)datetime數(shù)組,那么結(jié)果就是duration數(shù)組:

>> t2 = datetime(2014,6,29,6,30,45)

t2 =

???29-Jun-2014 06:30:45

>> d = t2 - t

d =

???48:30:45 ??23:30:45

在默認(rèn)情況下,duration數(shù)組顯示格式是“hours:minutes:seconds”。通過(guò)設(shè)置Format屬性,用戶可以改變顯示格式。例如可以改變?yōu)閱我粏挝弧靶r(shí)”,具體操作如下:

>> d.Format = 'h'

d =

???48.512 hrs ??23.512 hrs

用戶通過(guò)使用seconds、minutes、hours、days或?years函數(shù),也可以直接創(chuàng)建一個(gè)新的單一單位的duration數(shù)值。例如,創(chuàng)建一個(gè)2天的天數(shù)長(zhǎng)度,也就是正好等于24小時(shí)×2:

>> d = days(2)

d =

???2 days

用戶通過(guò)使用caldays、calweeks、calquarters和calyears函數(shù),也可以直接創(chuàng)建一個(gè)新的單一單位的calendar duration數(shù)值。例如,創(chuàng)建一個(gè)2個(gè)月的日歷天數(shù)長(zhǎng)度:

>> L = calmonths(2)

L =

???2mo

如果將一個(gè)calendar months 和一個(gè)calendar days數(shù)值相加,那么天數(shù)數(shù)值還將會(huì)分開(kāi)顯示,因?yàn)槊總€(gè)月的天數(shù)并不一致。除非是將其和一個(gè)具體的日期時(shí)間相加。

>> L = calmonths(2) + caldays(35)

L =

???2mo 35d

將一個(gè)calendar durations和一個(gè)datetime數(shù)組相加:

>> t2 = t + calmonths(2) + caldays(35)

t2 =

???Oct 01, 2014 ??Oct 02, 2014

此時(shí)得到的t2依然是一個(gè)datetime數(shù)組。

>> whos t2

??Name ?????Size ???????????Bytes ?Class ??????Attributes

??t2 ???????1x2 ??????????????161 ?datetime? ? ??

總的來(lái)說(shuō),有多種方式來(lái)表達(dá)日期和時(shí)間,MATLAB對(duì)于每一種都提供了方法(如圖3-7所示):

(1)表達(dá)時(shí)間點(diǎn),使用datetime數(shù)據(jù)格式。例如Wednesday, June 18, 2014 10:00:00。

(2)表達(dá)一段時(shí)間的長(zhǎng)度,采用固定時(shí)間長(zhǎng)度單位,使用duration數(shù)據(jù)類型。在使用此種類型的時(shí)候,1天總是等于24小時(shí)的,一年總是等于365.2425天的。例如:72 小時(shí)10分鐘。

(3)表達(dá)一段時(shí)間的長(zhǎng)度,采用可變時(shí)間長(zhǎng)度單位,使用calendarDuration數(shù)據(jù)類型。例如1個(gè)月可以是28、29、30或者31天。另外calendarDuration還考慮了夏令時(shí)和閏年,所以1天時(shí)間可以大于或者小于24小時(shí),1年可以是365天或者366天。

圖3-7??選擇需要導(dǎo)入的圖像文件

【例3-42】??指定時(shí)區(qū)與相關(guān)計(jì)算。

在對(duì)日期和時(shí)間的計(jì)算中,MATLAB還提供了時(shí)區(qū)設(shè)置選項(xiàng)。這樣我們只需在創(chuàng)建日期時(shí)間數(shù)組的時(shí)候指定好了時(shí)區(qū),那么就可以在不同時(shí)區(qū)之間進(jìn)行相關(guān)計(jì)算了,而不必人工換算中間有多少時(shí)差。下面我們就舉例來(lái)說(shuō)明如何來(lái)使用。

首先創(chuàng)建指定了時(shí)區(qū)的datetime數(shù)組:

>> t = datetime(2014,3,8:9,6,0,0,'TimeZone','local',...

????'Format','d-MMM-y HH:mm:ss Z')

t =

???8-Mar-2014 06:00:00 +0800 ??9-Mar-2014 06:00:00 +0800

在這里我們指定的是系統(tǒng)內(nèi)部的時(shí)區(qū)設(shè)置'local',返回的結(jié)果中“+0800”一項(xiàng)就是我們所處的時(shí)區(qū)和Coordinated Universal Time之間的時(shí)差。

用戶也可以指定時(shí)區(qū):

>> t.TimeZone = 'Asia/Tokyo'

t =

???8-Mar-2014 07:00:00 +0900 ??9-Mar-2014 07:00:00 +0900

同樣的方式我們可以定義另一個(gè)倫敦時(shí)間:

>> u = datetime(2014,3,9,6,0,0,'TimeZone','Europe/London',...

????'Format','d-MMM-y HH:mm:ss Z')

u =

???9-Mar-2014 06:00:00 +0000

兩個(gè)時(shí)間相減,就可以得到兩個(gè)時(shí)間點(diǎn)相差的實(shí)際時(shí)間:

>> dt = t - u

dt =

???-32:00:00 ???-8:00:00

【例3-43】??日期和時(shí)間序列的產(chǎn)生。

本例將來(lái)為讀者演示如何通過(guò)使用冒號(hào)(:)來(lái)產(chǎn)生日期和時(shí)間序列。

采用默認(rèn)步長(zhǎng)來(lái)產(chǎn)生序列,默認(rèn)步長(zhǎng)為1個(gè)日歷天。

>> t1 = datetime('01-Nov-2013 08:00:00');

t2 = datetime('05-Nov-2013 08:00:00');

t = t1:t2

t =

Columns 1 through 3

???01-Nov-2013 08:00:00 ??02-Nov-2013 08:00:00 ??03-Nov-2013 08:00:00

Columns 4 through 5

???04-Nov-2013 08:00:00 ??05-Nov-2013 08:00:00

用戶還可以指定步長(zhǎng):

>> t = t1:caldays(2):t2??????% ?使用caldays函數(shù)來(lái)指定2個(gè)日歷天為步長(zhǎng)

t =

???01-Nov-2013 08:00:00 ??03-Nov-2013 08:00:00 ??05-Nov-2013 08:00:00

>>t = t1:hours(18):t2????????% 使用18個(gè)小時(shí)作為步長(zhǎng)

t =

Columns 1 through 3

???01-Nov-2013 08:00:00 ??02-Nov-2013 02:00:00 ??02-Nov-2013 20:00:00

Columns 4 through 6

???03-Nov-2013 14:00:00 ??04-Nov-2013 08:00:00 ??05-Nov-2013 02:00:00

通過(guò)指定時(shí)區(qū)為紐約時(shí)間,t1所對(duì)應(yīng)時(shí)間正好在夏令時(shí)之前。

>> t1.TimeZone = 'America/New_York';

>> t2.TimeZone = 'America/New_York';

如果用戶這時(shí)使用1個(gè)日歷天為步長(zhǎng),那么這兩個(gè)時(shí)間點(diǎn)之間每天的時(shí)間長(zhǎng)度并不都是24小時(shí):

>> t = t1:t2;

>> dt = diff(t)

dt =

???24:00:00 ??25:00:00 ??24:00:00 ??24:00:00

如果將步長(zhǎng)設(shè)置為固定長(zhǎng)度的1天:

>> t = t1:days(1):t2

t =

Columns 1 through 3

???01-Nov-2013 08:00:00 ??02-Nov-2013 08:00:00 ??03-Nov-2013 07:00:00

Columns 4 through 5

???04-Nov-2013 07:00:00 ??05-Nov-2013 07:00:00

這時(shí)我們可以驗(yàn)證各時(shí)間點(diǎn)之間的長(zhǎng)度是否都等于24小時(shí):

>> dt = diff(t)

dt =

???24:00:00 ??24:00:00 ??24:00:00 ??24:00:00

【例3-44】??日期和時(shí)間序列的計(jì)算。

日期和時(shí)間序列可以像數(shù)組那樣進(jìn)行加減。

首先我們創(chuàng)建一個(gè)日期時(shí)間點(diǎn):

>> t1 = datetime('01-Nov-2013 08:00:00');

然后講一個(gè)固定長(zhǎng)度小時(shí)數(shù)組加到這一個(gè)時(shí)間點(diǎn)上:

>> t = t1 + hours(0:2)

t =

???01-Nov-2013 08:00:00 ??01-Nov-2013 09:00:00 ??01-Nov-2013 10:00:00

我們還可以加上一個(gè)日歷月份時(shí)間長(zhǎng)度:

>> t = t1 + calmonths(1:5)

t =

Columns 1 through 3

???01-Dec-2013 08:00:00 ??01-Jan-2014 08:00:00 ??01-Feb-2014 08:00:00

Columns 4 through 5

???01-Mar-2014 08:00:00 ??01-Apr-2014 08:00:00

上面結(jié)果中的每一個(gè)時(shí)間點(diǎn)都是當(dāng)月的第一天。如果我們要計(jì)算數(shù)組時(shí)間點(diǎn)之間的相隔天數(shù),我們可以使用以下命令:

>> dt = caldiff(t,'days')

dt =

???31d ??31d ??28d ??31d

如果要產(chǎn)生一個(gè)每月最后一天的日期序列,可以通過(guò)如下方法:

>> t = datetime('31-Jan-2014') + calmonths(0:11)

t =

Columns 1 through 5

???31-Jan-2014 ??28-Feb-2014 ??31-Mar-2014 ??30-Apr-2014 ??31-May-2014

Columns 6 through 10

???30-Jun-2014 ??31-Jul-2014 ??31-Aug-2014 ??30-Sep-2014 ??31-Oct-2014

Columns 11 through 12

???30-Nov-2014 ??31-Dec-2014

總結(jié)

以上是生活随笔為你收集整理的convert.todatetime指定日期格式_MATLAB的时间与日期的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。