主要内容

日期和时间算法

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

在Datetime数组中添加和减去持续时间

创建datetime标量。默认情况下,datetime阵列不与时区关联。

t1 = datetime (“现在”
t1 =datetime01 - 9 - 2021 10:21:27

通过添加一个小时序列来查找未来的时间点。

T2 = t1 + h (1:3)
t2 =1 x3 datetime01-Sep-2021 11:21:27 01-Sep-2021 12:21:27

中的每对datetime值之间的差异t2是1小时。

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

diff以小时、分钟和秒的精确数字返回持续时间。

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

T2 = t1 -分钟(20:10:40)
t2 =1 x3 datetime01-Sep-2021 10:01:27 01-Sep-2021 09:51:27 01-Sep-2021 09:41:27

将数字数组添加到datetime数组中。MATLAB®将数字数组中的每个值视为一个精确的24小时天数。

T2 = t1 + [1:3]
t2 =1 x3 datetime02-Sep-2021 10:21:27 03-Sep-2021 10:21:27

添加到Datetime与时区

如果您使用不同时区的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 =1 x3 datetime08- 03 -2014 00:00:00 09- 03 -2014 00:00:00

因为夏令时是在2014年3月9日发生的,这是在2014年的第三个日期时间t2不会在午夜发生。

中的每对datetime值之间的差异t2是24小时。

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

您可以添加其他单位(如年、小时、分钟和秒)的固定长度的持续时间,通过添加输出小时分钟,函数,分别。

要考虑到夏令时的变化,应该使用日历持续时间而不是持续时间。日历持续时间在添加到日期时间值或从日期时间值中减去它们时将考虑夏令时的变化。

添加一些日历天t1

T3 = t1 + caldays(0:2)
t3 =1 x3 datetime08 - 3月- 2014年3月- 2014年09 - 10 - 3月- 2014

中每个datetime值对之间的差异t3并非总是24小时,因为3月9日发生了夏令时转换。

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

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

增加一些日历月到2014年1月31日。

t1 = datetime (2014, 31)
t1 =datetime31 - 1月- 2014
T2 = t1 + calmonths(1:4)
t2 =1 x4 datetime2014年2月28日2014年3月31日2014年4月30日2014年5月31日

每一个datetimet2发生在每月的最后一天。

中每个datetime值对之间的差值t2在日历上按天数使用caldiff函数。

dt = caldiff (t2,“天”
dt =1 x3 calendarDuration31 d 30 d 31 d

中连续的datetime值对之间的天数dt并不总是相同的,因为不同的月份包含不同的天数。

在2014年1月31日增加一些日历年。

T2 = t1 + calyears(0:4)
t2 =1 x5 datetime31- 1- 2014 31- 1- 2015 31- 1- 2016 31- 1- 2017 31- 1- 2018

中每个datetime值对之间的差值t2在日历上按天数使用caldiff函数。

dt = caldiff (t2,“天”
dt =1 x4 calendarDuration365d 365d 365d 365d

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

你可以使用calquarterscalweeks,caldays用于创建添加或从datetime数组中减去的日历季度、日历周或日历日数组的函数。

添加日历持续时间是不可交换的。当你加的数大于1时calendarDuration数组到datetime, MATLAB®将它们按照它们在命令中出现的顺序添加。

加上3个日历月和30个日历天,至2014年1月31日。

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

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

T2 = datetime(2014,1,31) + caldays(30) + calmonths(3)
t2 =datetime02 - jun - 2014

日历时间算术

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

D1 = calyears(1) + calmonths(2) + caldays(20)
d1 =calendarDuration1 y 2莫20 d
d = calmonths(11) + caldays(23)
d2 =calendarDuration11莫23 d
D = d1 + d2
d =calendarDuration2 y 1 mo 43 d

当您将两个或多个日历持续时间相加时,大于12的月份数将转到年份数。但是,大量的天数不能转换为几个月,因为不同的月份由不同的天数组成。

增加d把它乘以2。日历持续时间值必须是整数,因此只能用整数值乘以它们。

2 * d
ans =calendarDuration4 y 2莫86 d

以精确单位计算运行时间

减去一个datetime数组,以精确地计算小时、分钟和秒的时间。

查找日期时间序列值与前一天开始之间的确切时间长度。

t2 = datetime (“现在”) + caldays (1:3)
t2 =1 x3 datetime02-Sep-2021 10:21:29 03-Sep-2021 10:21:29
t1 = datetime (“昨天”
t1 =datetime31日- 8月- 2021
Dt = t2 - t1
dt =1 x3持续时间58:21:29 82:21:29 106:21:29
dt
Name Size Bytes Class Attributes dt 1x3 40 duration

dt持续时间,格式为小时:分钟:秒。

通过更改以天为单位的时间格式的属性dt

dt。格式=' d '
dt =1 x3持续时间3.4316天4.4316天

通过乘法缩放持续时间值dt乘以1.2的倍数。因为持续时间的长度是精确的,所以可以用小数值乘和除它们。

dt2 = 1.2 * dt
dt2 =1 x3持续时间2.9179天4.1179天5.3179天

以日历单位计算运行时间

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

t1 = datetime (“今天”
t1 =datetime01 - 9 - 2021
T2 = t1 + caldays(0:2) + caldays(0:2)
t2 =1 x3 datetime05 - 9月- 2021年05 - 2021年10月- 2021年05 - 11月
dt = (t1, t2)之间
dt =1 x3 calendarDuration4d 1mo4d 2mo4d

另请参阅

||