matlab 日期加小時數 日期和時間算術運算

2021-10-13 14:06:47 字數 4621 閱讀 9701

為日期時間陣列加上或減去一定的持續時間

建立乙個日期時間標量。預設情況下,日期時間陣列並未與時區關聯。

t1 = datetime('now')

t1 = datetime

31-jan-2020 22:40:49

為其加上時數序列以求得未來的時間點。

t2 = t1 + hours(1:3)

t2 = 1x3 datetime

31-jan-2020 23:40:49 01-feb-2020 00:40:49 01-feb-2020 01:40:49

驗證 t2 中每一對日期時間值的差是否為 1 小時。

dt = diff(t2)

dt = 1x2 duration

01:00:00 01:00:00

diff 返回由小時數、分鐘數和秒數構成的精確持續時間。

從日期時間值減去分鐘數序列以查詢過去的時間點。

t2 = t1 - minutes(20:10:40)

t2 = 1x3 datetime

31-jan-2020 22:20:49 31-jan-2020 22:10:49 31-jan-2020 22:00:49

將數值陣列與 datetime 陣列相加。matlab® 將數值陣列中的每個值視作 24 小時一天的精確天數。

t2 = t1 + [1:3]

t2 = 1x3 datetime

01-feb-2020 22:40:49 02-feb-2020 22:40:49 03-feb-2020 22:40:49

包含時區的日期時間值加法

如要處理不同時區的日期時間值,或是要考慮夏令時更改,請使用關聯了時區的日期時間陣列。建立乙個 datetime 標量,表示紐約時間 2014 年 3 月 8 日。

t1 = datetime(2014,3,8,0,0,0,'timezone','america/new_york')

t1 = datetime

08-mar-2014

通過與天數序列(每一天固定 24 小時)相加查詢未來時間點。

t2 = t1 + days(0:2)

t2 = 1x3 datetime

08-mar-2014 00:00:00 09-mar-2014 00:00:00 10-mar-2014 01:00:00

由於夏令時變化發生在 2014 年 3 月 9 日,因此 t2 中的第三個日期時間不是在午夜。

驗證 t2 中每一對日期時間值的差是否為 24 小時。

dt = diff(t2)

dt = 1x2 duration

24:00:00 24:00:00

通過將日期時間值與 years、hours、minutes 和 seconds 等函式的輸出結果相加,您還可以分別為其加上以年份、小時、分鐘和秒等其他單位表示的固定長度持續時間。

如要考慮夏令時更改,則您應當用日曆持續時間代替持續時間。將日期時間值與日曆持續時間相加減時,日曆持續時間會考慮夏令時變化。

將多個日曆天與 t1 相加。

t3 = t1 + caldays(0:2)

t3 = 1x3 datetime

08-mar-2014 09-mar-2014 10-mar-2014

檢視 t3 中每一對日期時間值之間的差並非始終為 24 小時,這是因為夏令時變化發生在 3 月 9 日。

dt = diff(t3)

dt = 1x2 duration

24:00:00 23:00:00

將日曆持續時間與日期時間陣列相加

將多個日曆月與 2014 年 1 月 31 日相加。

t1 = datetime(2014,1,31)

t1 = datetime

31-jan-2014

t2 = t1 + calmonths(1:4)

t2 = 1x4 datetime

28-feb-2014 31-mar-2014 30-apr-2014 31-may-2014

t2 中的每個日期時間都出現在每個月的最後一天。

使用 caldiff 函式計算 t2 中每一對日期時間值在日曆天數上的差值。

dt = caldiff(t2,'days')

dt = 1x3 calendarduration

31d 30d 31d

dt 中連續的日期時間值對之間相差的天數並非始終相同,這是因為不同的月份由不同的天數組成。

將多個日曆年與 2014 年 1 月 31 日相加。

t2 = t1 + calyears(0:4)

t2 = 1x5 datetime

31-jan-2014 31-jan-2015 31-jan-2016 31-jan-2017 31-jan-2018

使用 caldiff 函式計算 t2 中每一對日期時間值在日曆天數上的差值。

dt = caldiff(t2,'days')

dt = 1x4 calendarduration

365d 365d 366d 365d

dt 中連續的日期時間值對之間相差天數並非始終相同,這是因為 2016 年是閏年,有 366 天。

您可以使用 calquarters、calweeks 和 caldays 函式建立日曆季度、日曆周或日曆天陣列,然後將其與日期時間陣列相加或相減。

日曆持續時間相加時不適用加法交換律。當您將乙個以上的 calendarduration 陣列與日期時間值相加時,matlab® 會按其在命令**現的順序相加。

在 2014 年 1 月 31 日基礎上先加上 3 個日曆月,再加上 30 個日曆天。

t2 = datetime(2014,1,31) + calmonths(3) + caldays(30)

t2 = datetime

30-may-2014

對同一日期,先加上 30 個日曆天,然後再加上 3 個日曆月。所得到的結果並不相同,這是因為當您將日曆持續時間與日期時間值相加時,加上的天數取決於原始日期。

t2 = datetime(2014,1,31) + caldays(30) + calmonths(3)

t2 = datetime

02-jun-2014

日曆持續時間算術運算

建立兩個日曆持續時間,然後對其求和。

d1 = calyears(1) + calmonths(2) + caldays(20)

d1 = calendarduration

1y 2mo 20d

d2 = calmonths(11) + caldays(23)

d2 = calendarduration

11mo 23d

d = d1 + d2

d = calendarduration

2y 1mo 43d

當您求兩個或更多日曆持續時間之和時,大於 12 的月數將轉進到年數。但是,較大的天數不會轉進到月數,因為不同的月份由不同的天數組成。

用因子 2 乘以 d 以增加其大小。日曆持續時間的值必須是整數,因此只能用整數值與其相乘。

2*dans = calendarduration

4y 2mo 86d

以精確單位計算流逝時間

將乙個 datetime 陣列與另乙個相減,按精確的小時、分鐘和秒數計算流逝的時間。

求出日期時間值序列與前一天起始時間之間的精確時長。

t2 = datetime('now') + caldays(1:3)

t2 = 1x3 datetime

01-feb-2020 22:40:50 02-feb-2020 22:40:50 03-feb-2020 22:40:50

t1 = datetime('yesterday')

t1 = datetime

30-jan-2020

dt = t2 - t1

dt = 1x3 duration

70:40:50 94:40:50 118:40:50

whos dt

name size bytes class attributes

dt 1x3 40 duration

dt 以「時:分:秒」的格式儲存持續時間。

通過更改 dt 的 format 屬性,以天為單位檢視流逝的持續時間。

dt.format = 'd'

dt = 1x3 duration

2.945 days 3.945 days 4.945 days

用因子 1.2 乘以 dt 以擴大持續時間的值。由於持續時間具有精確長度,您可以將其與小數值相乘和相除。

dt2 = 1.2*dt

dt2 = 1x3 duration

3.534 days 4.734 days 5.934 days

以日曆單位計算流逝時間

使用 between 函式求兩個日期之間流逝的日曆年、月和天數。

t1 = datetime('today')

t1 = datetime

31-jan-2020

t2 = t1 + calmonths(0:2) + caldays(4)

t2 = 1x3 datetime

04-feb-2020 04-mar-2020 04-apr-2020

dt = between(t1,t2)

dt = 1x3 calendarduration

4d 1mo 4d 2mo 4d

DATEDIFF 函式 日期和時間

功能 返回兩個日期之間的間隔。語法 datediff date part,date expression 1,date expression 2 date part year quarter month week day hour minute second millisecond引數 date p...

DATEDIFF 函式 日期和時間

功能 返回兩個日期之間的間隔。語法 datediff date part,date expression 1,date expression 2 date part year quarter month week day hour minute second millisecond引數 date p...

DAX函式 日期和時間函式

日期和時間函式 calendar 返回具有單列 date 的表,該列包含一組連續日期。日期範圍從指定的開始日期到指定的結束日期 這兩個日期包含在內 calendar date 2005,1,1 date 2015,12,31 公式返回乙個表,其中的日期介於 2005 年 1 月 1 日和 2015 ...