目录
datetime 数据类型表示时间点,如 2020 年 8 月 24 日上午 10:50:30。datetime 数组指定与数组中存储的每个时间点相关联的年、月、日、小时、分钟和秒分量(使用前 ISO 日历)。
此外,datetime 数组提供:
-
输出显示和输入文本解析的灵活格式。
-
存储精确到纳秒的秒数
-
可处理时区、夏令时和闰秒的属性。
语法
t = datetime
t = datetime(relativeDay)
t = datetime(DateStrings)
t = datetime(DateStrings,'InputFormat',infmt)
t = datetime(DateVectors)
t = datetime(Y,M,D)
t = datetime(Y,M,D,H,MI,S)
t = datetime(Y,M,D,H,MI,S,MS)
t = datetime(X,'ConvertFrom',dateType)
t = datetime(___,Name,Value)
说明
t = datetime 返回一个对应于当前日期和时间的标量 datetime 数组。
t = datetime(relativeDay) 使用 relativeDay 指定的日期。relativeDay 输入可以是 'today'、'tomorrow'、'yesterday' 或 'now'。
t = datetime(DateStrings) 根据表示时间点的 DateStrings 中的文本创建一个日期时间值数组。
t = datetime(DateStrings,'InputFormat',infmt) 使用由 infmt 指定的格式来解释 DateStrings。输入参数 DateStrings 中的所有值必须具有相同的格式。
要避免理解不清类似的格式,请指定 'InputFormat' 及其相应的值 infmt。
要控制 t 的显示格式,请指定 'Format' 名称-值对组参数,或设置 t 的 Format 属性。
t = datetime(DateVectors) 根据 DateVectors 中的日期向量创建一个由日期时间值组成的列向量。
t = datetime(Y,M,D) 为 Y、M 和 D(年、月、日)数组的对应元素创建一个日期时间值数组。这些数组的大小必须相同(或者,其中任一数组可以是标量)。还可以将输入参数指定为日期向量 [Y M D]。
t = datetime(Y,M,D,H,MI,S) 还创建 H、MI 和 S(小时、分钟和秒)数组。所有数组的大小必须相同(或者,其中任一数组可以是标量)。还可以将输入参数指定为日期向量 [Y M D H MI S]。
t = datetime(Y,M,D,H,MI,S,MS) 添加一个 MS(毫秒)数组。所有数组的大小必须相同(或者,其中任一数组可以是标量)。
t = datetime(X,'ConvertFrom',dateType) 将 X 中的数值转换为 datetime 数组 t。dateType 参数指定 X 中的值的类型。
如果 X 包含 POSIX® 时间或表示本地时间的儒略日期,请使用 'TimeZone' 名称-值对组参数为 t 指定适当的时区。如果不指定时区,X 中的 POSIX 时间或儒略日期将被视为 UTC 时间,而不是本地时间。
t = datetime(___,Name,Value) 使用一个或多个名称-值对组参数以及先前语法中的任何输入参数来指定其他选项。例如,您可以使用 'Format' 名称-值对组参数指定 t 的显示格式。
要在根据文本创建日期时间值时获得最佳性能,请指定 'Format' 或 'InputFormat' 及其相应的值 infmt。
示例
指定特定时区的当前日期和时间
在本地系统时区中指定当前日期和时间。
t = datetime('now','TimeZone','local','Format','d-MMM-y HH:mm:ss Z')
t = datetime
2-Oct-2021 19:49:54 -0400
在韩国首尔表示的时区中指定当前日期和时间。
t = datetime('now','TimeZone','Asia/Seoul','Format','d-MMM-y HH:mm:ss Z')
t = datetime
3-Oct-2021 08:49:54 +0900
基于字符向量创建日期和时间
基于字符向量元胞数组创建 datetime 数组。
DateStrings = {'2014-05-26';'2014-08-03'};
t = datetime(DateStrings,'InputFormat','yyyy-MM-dd')
t = 2x1 datetime
26-May-2014
03-Aug-2014
t 中的日期时间值使用默认格式显示,而不是使用输入日期的格式显示。
基于字符串数组创建日期和时间
从 R2016b 开始,可以使用 string 函数创建字符串数组,并将其转换为日期时间值。
str = ["2016-03-24","2016-04-19"]
str = 1x2 string
"2016-03-24" "2016-04-19"
转换字符串,将输入格式指定为 yyyy-MM-dd。必须将格式指定为字符向量,即使 str 是字符串数组。
t = datetime(str,'InputFormat','yyyy-MM-dd')
t = 1x2 datetime
24-Mar-2016 19-Apr-2016
从表示小数秒的文本转换为时间
从表示毫秒精度的日期和时间的文本创建一个 datetime 值。要转换 datetime 函数需要更多信息才能解析其格式的文本,请指定 'InputFormat' 名称-值对组参数。
d = '2018-06-25 11:23:37.712';
t = datetime(d,'InputFormat','yyyy-MM-dd HH:mm:ss.SSS')
t = datetime
25-Jun-2018 11:23:37
转换会保留小数秒。但是,默认情况下 datetime 数组不显示小数秒。要显示小数秒,请指定 'Format' 名称-值对组或 Format 属性。
t.Format = 'MMM dd, yyyy HH:mm:ss.SSS'
t = datetime
Jun 25, 2018 11:23:37.712
'InputFormat' 参数仅适用于从输入文本进行的转换。Format 属性指定任何 datetime 数组的显示。
从包含字面字符的文本创建日期和时间
将 ISO 8601 格式的日期转换为日期时间值。
创建包含 ISO 8601 格式的日期的字符向量元胞数组。在该格式下,字母 T 用作隔开日期和时间的分隔符。每个字符向量包含一个时区偏移量。字母 Z 表示与 UTC 之间无偏移量。
DateStrings = {'2014-05-26T13:30-05:00';'2014-08-26T13:30-04:00';'2014-09-26T13:30Z'}
DateStrings = 3x1 cell
{'2014-05-26T13:30-05:00'}
{'2014-08-26T13:30-04:00'}
{'2014-09-26T13:30Z' }
将字符向量转换为日期时间值。指定输入格式时,将字母 T 包含在单引号中以指示它是一个字面字符。使用 TimeZone 名称-值对组参数指定输出日期时间数组的时区。
t = datetime(DateStrings,'InputFormat','uuuu-MM-dd''T''HH:mmXXX','TimeZone','UTC')
t = 3x1 datetime
26-May-2014 18:30:00
26-Aug-2014 17:30:00
26-Sep-2014 13:30:00
t 中的日期时间值以默认格式显示。
从外语文本创建日期和时间
创建包含用法语表示的日期的字符向量元胞数组。
C = {'8 avril 2013','9 mai 2013';'10 juin 2014','11 juillet 2014'}
C = 2x2 cell
{'8 avril 2013'} {'9 mai 2013' }
{'10 juin 2014'} {'11 juillet 2014'}
将 C 中字符向量转换为日期时间值。如果计算机的区域设置是使用英语,则必须指定 'Locale' 名称-值对组参数来指示字符串是用法语表示的。
t = datetime(C,'InputFormat','d MMMM yyyy','Locale','fr_FR')
t = 2x2 datetime
08-Apr-2013 09-May-2013
10-Jun-2014 11-Jul-2014
t 中的日期时间值以默认格式和 MATLAB 所使用的语言显示,具体取决于系统区域设置。
基于向量的日期和时间
根据单个年、月和日值数组创建一个 datetime 数组。
创建年值为 Y、日值为 D 的示例数值数组。在本例中,月值 M 是标量。
Y = [2014;2013;2012];
M = 01;
D = [31;30;31];
创建数组 datetime。
t = datetime(Y,M,D)
t = 3x1 datetime
31-Jan-2014
30-Jan-2013
31-Jan-2012
使用 Format 名称-值对组参数指定输出的自定义显示格式。
t = datetime(Y,M,D,'Format','eeee, MMMM d, y')
t = 3x1 datetime
Friday, January 31, 2014
Wednesday, January 30, 2013
Tuesday, January 31, 2012
将 Excel 日期数字转换为日期时间
创建一个由 Excel® 日期数字组成的示例数组,这些日期数字表示自 1900 年 1 月 0 日以来的众多日期。
X = [39558, 39600; 39700, 39800]
X = 2×2
39558 39600
39700 39800
将 X 中的值转换为日期时间值。
t = datetime(X,'ConvertFrom','excel')
t = 2x2 datetime
20-Apr-2008 01-Jun-2008
09-Sep-2008 18-Dec-2008
提示
-
要查看 datetime 函数列表,可参考日期和时间。
-
有关接受 datetime 数组作为输入参数的 MATLAB 核心函数的列表,可参考支持日期和时间数组的核心函数。