主要内容

日期和时间算法

此示例显示如何添加和减去日期和时间值,以精确单位或日历单位计算未来和过去的日期和经过的持续时间。可以对日期和时间数组进行加、减、乘、除运算,方法与对其他MATLAB®数据类型使用这些运算符相同。然而,有些行为是特定于日期和时间的。

添加和减去DateTime数组的持续时间

创建一个datetime标量。缺省情况下,datetime数组不与时区关联。

t1 = datetime ('现在'
t1 =datetime24 - 8月- 2020 20:04:47

通过添加一系列时间来寻找未来的点。

T2 = t1 +小时(1:3)
T2 =1x3 DateTime.24-Aug-2020 23:04:47

中每个datetime值对之间的差异T2.是1小时。

dt = diff(t2)
dt =1 x2持续时间01:00:00 01:00:00

根据确切的小时数,分钟和秒数返回持续时间。

从一个日期时间中减去一个分钟序列来找到过去的时间点。

T2 = t1 -分钟(20:10:40)
T2 =1x3 DateTime.24-u8-2020 19:44:47 24-us 8020 19:34:47 24-us 8020 19:24:47

将数字数组添加到adatetime大批。Matlab®将数字阵列中的每个值视为精确,24小时的时间。

T2 = t1 + [1:3]
T2 =1x3 DateTime.25-ev-2020 20:04:47 26-us-2020 20:04:47 27-us 8020 20:04:47

添加到Datetime with Time Zone

如果您在不同的时区中使用DateTime值,或者如果要考虑夏令时更改,则使用与时区相关联的DateTime阵列。创建一个datetime标量代表2014年3月8日在纽约。

T1 = DateTime(2014,3,8,0,0,0,'时区'“美国/ New_York”
t1 =datetime08-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日发生了夏令时转移,所以第三个DATETIMET2.不会发生在午夜。

中每个datetime值对之间的差异T2.是24小时。

dt = diff(t2)
dt =1 x2持续时间24:00:00 24:00:00

属性的输出可以添加其他单位(如年、小时、分钟和秒)的固定长度持续时间小时分钟,功能分别。

要考虑夏令时更改,您应该使用日历持续时间而不是持续时间。日历持续时间账户用于从DateTime值添加或从DateTime值添加或减去它们时移位。

添加日历天数T1.

T3 = t1 + caldays(0:2)
t3 =1x3 DateTime.08-Mar-2014 2014 09-Mar-2014 10-Mar-2014

查看每一对datetime值之间的差异T3.由于夏令时在3月9日的转换,并不总是24小时。

dt = diff(t3)
dt =1 x2持续时间24:00:00 23:00:00

将日历持续时间添加到DateTime数组

2014年1月31日加上几个日历月。

T1 = DateTime(2014,1,31)
t1 =datetime31 - 1月- 2014
T2 = T1 + Calmonths(1:4)
T2 =1x4 DateTime.2014年2月28日至2014年3月31日至2014年3月30日至2014年4月31日 -  2014年5月31日

每个日期时间T2.发生在每个月的最后一天。

计算每对日期时间值之间的差异T2.根据许多日历日使用卡特德功能。

dt = caldiff(t2,'天'
dt =1 x3 calendarDuration31D 30D 31D.

连续的DateTime值对之间的天数DT.不总是一样的,因为不同的月份由不同的天数组成。

添加一些日历年至2014年1月31日。

T2 = T1 + Calyears(0:4)
T2 =1x5 DateTime.2014年1月31日2015年1月31日2016年1月31日2017年1月31日2018年1月31日

计算每对日期时间值之间的差异T2.根据许多日历日使用卡特德功能。

dt = caldiff(t2,'天'
dt =1x4日历365d 365d 366d 365d

连续的DateTime值对之间的天数DT.并不总是一样的,因为2016年是闰年,有366天。

你可以使用calquarterscalweeks,caldays函数来创建日历Quarters,日历周或日历日的阵列,您将从DateTime阵列中添加或减去。

添加日历持续时间不是换向。当您添加多个时日历数组到DateTime,Matlab®按顺序添加它们在命令中显示的顺序。

添加3个日历月,然后加入30日至2014年1月31日的30日历日。

T2 = datetime(2014,1,31) + calmonths(3) + caldays(30)
T2 =datetime30 - 5 - 2014

首先添加30个日历日到同一日期,然后添加3个日历月。结果是不一样的,因为当您将日历持续时间添加到日期时间时,添加的天数取决于原始日期。

T2 = DateTime(2014,1,31)+ CALDAYS(30)+ Calmonths(3)
T2 =datetime02-jun-2014

日历时间算术

创建两个日历持续时间,然后找到他们的总和。

D1 = Calyears(1)+ Calmonths(2)+ Caldays(20)
D1 =日历1Y 2MO 20D.
D2 = Calmonths(11)+ CALDAYS(23)
D2 =日历11MO 23d.
d = d1 + d2
d =日历2Y 1MO 43d.

当将两个或两个以上的日历持续时间相加时,大于12的月数将转换为若干年。但是,大量的天数并不会转化为若干个月,因为不同的月由不同的天数组成。

增加D.通过将其乘以2.日历持续时间值必须是整数,因此您只能通过整数值乘以它们。

2 * d
ans =.日历4 y 2莫86 d

计算确切单位的经过时间

减去一个datetime从另一个数组来计算确切的小时数,分钟和秒数的经过时间。

在DateTime值序列和前一天的开始之间找到确切的时间长度。

t2 = datetime ('现在')+ CALDAYS(1:3)
T2 =1x3 DateTime.26-Aug-2020 20:04:50
t1 = datetime (“昨天”
t1 =datetime2020年8月23日
dt = t2  -  t1
dt =1x3持续时间68:04:50 92:04:50 116:04:50
谁是DT.
Name Size Bytes Class属性dt 1x3 40持续时间

DT.包含格式的持续时间,小时:分钟:秒。

以天为单位查看经过的时间格式财产DT.

dt.format ='D'
dt =1x3持续时间2.8367天3.8367天4.8367天

通过相乘来缩放持续时间值DT.一个1.2倍。由于持续时间具有精确的长度,因此您可以通过分数值乘以和划分它们。

dt2 = 1.2 * dt
dt2 =1x3持续时间3.404天4.604天5.804天

以日历单位计算运行时间

使用之间函数查找两个日期之间经过的日历年、月和日。

t1 = datetime ('今天​​'
t1 =datetime24-us 8020
T2 = t1 + calmonths(0:2) + caldays(4)
T2 =1x3 DateTime.28日- 2020年8月28日——2020年9月28日- 10月- 2020
dt = (t1, t2)之间
dt =1 x3 calendarDuration4d 1mo 4d 2mo 4d

也可以看看

||