表示 MATLAB 中的日期和时间
存储日期和时间信息的主要方法是使用 datetime 数组,该数组支持算术运算、排序、比较、绘图和格式化显示方式。算术差异的结果在 duration 数组中返回;如果使用基于日历的函数,则在 calendarDuration 数组中返回。
例如,创建一个 datetime 数组表示以下两个日期:2025 年 6 月 28 日上午 6 点和 2025 年 6 月 28 日上午 7 点。为此 datetime 值指定年、月、日、时、分和秒分量的数值。
t = datetime(2014,6,28,6:7,0,0)
t = 1×2 datetime
28-Jun-2014 06:00:00 28-Jun-2014 07:00:00
您可以通过为 datetime 数组的属性分配新的值,更改日期或时间分量的值。例如,通过为 Day 属性分配新的值,更改每个值的日期。
t.Day = 27:28
t = 1×2 datetime
27-Jun-2014 06:00:00 28-Jun-2014 07:00:00
通过更改数组的 Format 属性,可更改其显示格式。例如,指定一种以 ISO 8601 格式表示日期和时间的格式(包括表示毫秒的位数)。当您更改显示格式时,datetime 数组中的值不会更改。
t.Format = "yyyy-MM-dd HH:mm:ss.SSS"t = 1×2 datetime
2014-06-27 06:00:00.000 2014-06-28 07:00:00.000
如果用一个 datetime 数组减另一个,将得到一个 duration 数组。duration 数组中的值以固定长度 24 小时制日期为单位表示时间长度。也就是说,duration 值 1 等于一天。duration 数组的默认显示格式是 hh:mm:ss,这意味着长度为一天的 duration 值显示为 24:00:00。
t2 = datetime(2014,6,28,6:7,0:1,0)
t2 = 1×2 datetime
28-Jun-2014 06:00:00 28-Jun-2014 07:01:00
d = t2 - t
d = 1×2 duration
24:00:00 00:01:00
您可以通过更改 duration 数组的 Format 属性来更改其显示格式。时间长度保持不变,但您可以使用不同时间单位显示它们。例如,将显示格式更改为秒。
d.Format = "s"d = 1×2 duration
86400 sec 60 sec
您可以通过使用 seconds、minutes、hours、days 或 years 函数,以指定的时间单位创建时间长度的 duration 数组。这些函数还会将显示格式设置为匹配的时间单位。例如,使用 days 函数创建一个表示 2.5 天的 duration 值,其中每天为整整 24 小时。显示格式自动设置为天。
d = days(2.5)
d = duration
2.5 days
您也可以创建 calendarDuration 数组。与 duration 数组一样,calendarDuration 数组表示时间长度。但是,calendarDuration 数组不表示固定的时间长度,而是表示可变长度的采用日历单位的时间。例如,一个日历月可以是 28、29、30 或 31 天,具体取决于指定的月份。对于涉及日历日、月、季度和年的 datetime 数组的计算,请使用 calendarDuration 数组。
要以指定的时间单位创建 calendarDuration 数组,请使用 caldays、calweeks、calmonths、calquarters 和 calyears 函数。例如,指定一个表示两个月的 calendarDuration 值。
L = calmonths(2)
L = calendarDuration
2mo
添加一定的日历月数和日历天数。天数与月数仍然是分开的,这是因为月中的天数不是固定的,只有您向某一特定 datetime 数组添加了 calendarDuration 值或从 datetime 数组中减去该值后才能确定。
L = calmonths(2) + caldays(35)
L = calendarDuration
2mo 35d
将 calendarDuration 添加到 datetime 数组以计算新的日期和时间。运算结果是另一个 datetime 数组,其中 10 月 2 日比 6 月 28 日晚 2 个月零 35 天。
t3 = t2 + L
t3 = 1×2 datetime
02-Oct-2014 06:00:00 02-Oct-2014 07:01:00
总的说来,表示日期和时间的方式有多种,MATLAB® 为每种方法提供了一个数据类型:
要表示时间点,请使用
datetime数据类型。例如,使用具有数值或文本输入的datetime表示 2014 年 6 月 18 日星期三 10:00:00。datetime(2014,6,18,10,0,0)datetime("2014-06-18 10:00:00")
要以固定长度的单位表示时间长度,请使用
duration数据类型。使用duration数据类型时,1 天始终等于 24 小时,1 年始终等于 365.2425 天。例如,使用hours和minutes表示 72 小时 10 分钟。hours(72) + minutes(10)
要以可变长度的单位表示日历时间长度,请使用
calendarDuration数据类型。calendarDuration数据类型还考虑了夏令时更改和闰年,因此一个日历日可能大于或小于 24 小时,一个日历年可能有 365 或 366 天。例如,使用calmonths表示一个日历月。calmonths(1)

另请参阅
datetime | duration | calendarDuration