Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

datetime

表示时间点的数组

说明

datetime 数据类型表示时间点,如 2020 年 8 月 24 日上午 10:50:30。datetime 数组指定与数组中存储的每个时间点相关联的年、月、日、小时、分钟和秒分量(使用前 ISO 日历)。

此外,datetime 数组提供:

  • 输出显示和输入文本解析的灵活格式。

  • 存储精确到纳秒的秒数

  • 可处理时区、夏令时和闰秒的属性。

创建对象

描述

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' 名称-值对组参量,或设置 tFormat 属性。

示例

t = datetime(DateVectors) 根据 DateVectors 中的日期向量创建一个由日期时间值组成的列向量。

t = datetime(Y,M,D)YMD(年、月、日)数组的对应元素创建一个日期时间值数组。这些数组的大小必须相同(或者,其中任一数组可以是标量)。还可以将输入参量指定为日期向量 [Y M D]

t = datetime(Y,M,D,H,MI,S) 还创建 HMIS(小时、分钟和秒)数组。所有数组的大小必须相同(或者,其中任一数组可以是标量)。还可以将输入参量指定为日期向量 [Y M D H MI S]

t = datetime(Y,M,D,H,MI,S,MS) 添加一个 MS(毫秒)数组。所有数组的大小必须相同(或者,其中任一数组可以是标量)。

示例

t = datetime(X,'ConvertFrom',dateType)X 中的数值转换为 datetime 数组 tdateType 参量指定 X 中的值的类型。

如果 X 包含 POSIX® 时间或表示本地时间的儒略日期,请使用 'TimeZone' 名称-值对组参量为 t 指定适当的时区。如果不指定时区,X 中的 POSIX 时间或儒略日期将被视为 UTC 时间,而不是本地时间。

t = datetime(___,Name,Value) 支持上述语法中的任何输入参量,且可使用一个或多个名称-值对组参量指定其他选项。例如,您可以使用 'Format' 名称-值对组参量指定 t 的显示格式。

要在根据文本创建日期时间值时获得最佳性能,请指定 'Format''InputFormat' 及其相应的值 infmt

输入参量

全部展开

相对于当前日期的日期,指定为以下值之一。

relativeDay 的值描述
'yesterday'上一天日期的午夜
'today'当前日期的午夜
'tomorrow'下一天日期的午夜
'now'当前日期时间

表示日期和时间的文本,指定为字符数组、字符向量元胞数组或字符串数组。datetime 函数首先尝试将 DateStrings 的格式与常用格式进行匹配。如果您知道格式,请指定 'InputFormat' 及其对应的 infmt 值,或指定 'Format' 名称-值对组参量。

示例: '24-Oct-2014 12:45:07'

示例: {'15-Oct-2013','20-Nov-2014'}

示例: ["11-Nov-2016","12-Dec-2016"]

数据类型: char | cell | string

表示日期和时间的输入文本的格式,指定为包含字母标识符的字符向量或字符串标量:

  • 如果 infmt 不包含日期设定符,则 datetime 假设 DateStrings 中的值发生在当天。

  • 如果 infmt 不包括时间设定符,则 datetime 假设 DateStrings 中的值发生在午夜。

下表显示了几种常见的输入格式,还包括纽约市 2014 年 4 月 19 日星期六晚上 9:41:06.12345 的格式化输入示例。

infmt 的值示例
'yyyy-MM-dd'2014-04-19
'dd/MM/yyyy'19/04/2014
'dd.MM.yyyy'19.04.2014
'yyyy年 MM月 dd日'2014年 04月 19日(日语区域设置的字符,ja_JP
'MMMM d, yyyy'April 19, 2014
'eeee, MMMM d, yyyy h:mm a'Saturday, April 19, 2014 9:41 PM
'MMMM d, yyyy HH:mm:ss Z'April 19, 2014 21:41:06 -0400
'yyyy-MM-dd''T''HH:mmXXX'2014-04-19T21:41-04:00
'yyyy-MM-dd HH:mm:ss.SSS'2014-04-19 21:41:06.123

对于表示小数秒的输入文本,您可以指定 infmt 最多包含 9 个 S 字符,以指示小数秒的位数。例如,'yyyy-MM-dd HH:mm:ss.SSS' 是表示以毫秒精度表示日期和时间的文本的格式。

有关有效字母标识符的完整列表,请参阅日期时间数组的 Format 属性。您可以将大多数标识符同时用作输入格式和显示格式。但是,不要使用 MMMMM 或任何 e 标识符来解释输入文本,因为这些标识符仅用于显示。

注意

datetime 接受的字母标识符与 datestrdatenumdatevec 函数使用的标识符不同。

数据类型: char | string

日期向量指定为 m×6 或 m×3 矩阵,分别包含 m 个完整或部分日期向量。完整日期向量带有六个元素,依顺序分别指示年份、月份、日期、小时、分钟和秒。部分日期向量只带有三个元素,依顺序分别指示年份、月份和日期。DateVector 的每个元素应为正整数或负整数值,但秒元素例外,它可以为小数。如果某元素不在常规范围内,则 datetime 会同时调整该日期向量元素及其前面的元素。例如,如果分钟元素为 70,则 datetime 会将小时元素调整 1 并将分钟元素设置为 10。如果分钟元素为 -15,则 datetime 会将小时元素减少 1 并将分钟元素设置为 45

示例: [2014 10 24 12 45 07]

示例: [2014 10 24]

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

年、月和日数组,指定为数值数组。这些数组的大小必须相同,或者其中任一数组可以是标量。Y,M,D 应为整数值。

  • 如果 Y,M,D 全为标量或全为列向量,则您可以将输入参量指定为日期向量 [Y M D]

  • 如果 YMD 输入的元素不在常规范围内,则 datetime 会同时调整该元素及上一输入的同一元素。有关详细信息,请参阅 DateVectors 输入参量的说明。

示例: 2003,10,24

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

年、月、日、小时、分钟和秒数组,指定为数值数组。这些数组的大小必须相同,或其中任何一项可以为标量。指定小数秒作为秒输入 S 的一部分。Y,M,D,H,MI 数组必须包含整数值。

  • 如果 Y,M,D,H,MI,S 全为标量或全为列向量,则您可以将输入参量指定为日期向量 [Y M D H MI S]

  • 如果 YMDHMIS 输入的元素不在常规范围内,则 datetime 会同时调整该元素及上一输入的同一元素。有关详细信息,请参阅 DateVectors 输入参量的说明。

示例: 2003,10,24,12,45,07.451

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

年、月、日、小时、分钟、秒和毫秒数组,指定为数值数组。这些数组的大小必须相同,或其中任何一项可以为标量。Y,M,D,H,MI,S 数组必须包含整数值。MS 可以包含毫秒的小数部分。

如果 YMDHMISMS 输入的一个元素不在常规范围内,则 datetime 会同时调整该元素及上一输入的同一元素。有关详细信息,请参阅 DateVectors 输入参量的说明。

示例: 2003,10,24,12,45,07,10.52

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

数值,指定为数组。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

X 中的值的类型,指定为下列值之一。

dateType 的值

X 中值的类型

'datenum'

从 0000 年 1 月 0 日起计的天数(前 ISO 日历)。

'excel'

从 1900 年 1 月 0 日起计的天数。

Excel® 日期值舍入为最近的微秒。

请注意:Excel 错误地假设 1900 年是闰年。因此,计算 Excel 日期值时,1900 年 2 月 28 日与 1900 年 3 月 1 日之间因为多了一天而中断。

'excel1904'

从 1904 年 1 月 0 日起计的天数。

Excel 日期值舍入为最近的微秒。

请注意:Excel 错误地假设 1900 年是闰年。因此,计算 Excel 日期值时,1900 年 2 月 28 日与 1900 年 3 月 1 日之间因为多了一天而中断。

'juliandate'

从 UTC 时间公元前 4714 年 11 月 24 日(前公历日历)中午起计的天数。

如果您将 X 转换为 datetime 数组而不指定时区,则 datetime 值表示 UTC 时间,而不是本地时间。要表示本地时间,请使用 'TimeZone' 名称-值对组参量指定时区。

示例:使用纽约的时区转换 X

T = datetime(X,'ConvertFrom','juliandate',...
'TimeZone','America/New_York')

然后,您可以将 T 转换为未设置时区的 datetime 数组,通过为 TimeZone 指定空字符向量来表示本地时间。

T.TimeZone = ''

'modifiedjuliandate'

从 UTC 时间 1858 年 11 月 17 日午夜起计的天数。

如果您将 X 转换为 datetime 数组而不指定时区,则 datetime 值表示 UTC 时间,而不是本地时间。要表示本地时间,请使用 'TimeZone' 名称-值对组参量指定时区。

示例:使用纽约的时区转换 X

T = datetime(X,'ConvertFrom','modifiedjuliandate',...
'TimeZone','America/New_York')

然后,您可以将 T 转换为未设置时区的 datetime 数组,通过为 TimeZone 指定空字符向量来表示本地时间。

T.TimeZone = ''

'posixtime'

从 UTC 时间 1970 年 1 月 1 日 00:00:00 起计的秒数,不计算闰秒。

如果您将 X 转换为 datetime 数组而不指定时区,则 datetime 值表示 UTC 时间,而不是本地时间。要表示本地时间,请使用 'TimeZone' 名称-值对组参量指定时区。

示例:使用纽约的时区转换 X

T = datetime(X,'ConvertFrom','posixtime',...
'TimeZone','America/New_York')

然后,您可以将 T 转换为未设置时区的 datetime 数组,通过为 TimeZone 指定空字符向量来表示本地时间。

T.TimeZone = ''

'yyyymmdd'

以 YYYYMMDD 数值形式表示的日期。例如,20140402 表示 2014 年 4 月 2 日。

'ntp'

自 UTC 1900 年 1 月 1 日 00:00:00 以来的“时钟计时单元”数,每个时钟计时单元为 2^-32 秒。

'.net'

自 UTC 0001 年 1 月 1 日 00:00:00 以来的“时钟计时单元”数,每个时钟计时单元为 100 纳秒。

'ntfs'

自 UTC 1601 年 1 月 1 日 00:00:00 以来的“时钟计时单元”数,每个时钟计时单元为 100 纳秒。

'tt2000'

自 J2000 以来经过的纳秒数。常用数据格式 (CDF) 将 CDF_TIME_TT2000(或 TT2000)数据类型定义为高分辨率时间类型,用于处理 CDF 文件中数据的闰秒。有关详细信息,请参阅在 CDF 中处理闰秒的要求

输入 X 必须为 int64 数组,其元素表示 TT2000 纪元中的时间。

要转换 TT2000 时间,请使用 "ConvertFrom","tt2000""TimeZone","UTCLeapSeconds" 名称-值参量调用 datetimeUTCLeapSeconds 时区是唯一考虑闰秒的时区。

注意:J2000 是 2000 年 1 月 1 日 12:00 的地球时 (TT)。TT 与 UTC 的不同之处在于两个因素:

  • 闰秒

  • TT 和原子钟计时相差 32.184 秒

因此,J2000 实际上发生在 UTCLeapSeconds 时区中午前 64.184 秒,时间是:

D = datetime(2000,1,1,11,58,55,816,"TimeZone","UTCLeapSeconds")
D = 2000-01-01T11:58:55.816Z

示例:创建一个表示 TT2000 时间的 int64 数组。然后将其转换为 datetime 数组。

X = int64([702077514184000000; ...
           702163914184000000; ...
           702250314184000000])
X =
  3x1 int64 column vector
   702077514184000000
   702163914184000000
   702250314184000000
D = datetime(X,"ConvertFrom","tt2000","TimeZone","UTCLeapSeconds")
D = 
  3x1 datetime array
   2022-04-01T09:30:45.000Z
   2022-04-02T09:30:45.000Z
   2022-04-03T09:30:45.000Z

'epochtime','Epoch',epochValue

从纪元开始的秒数。

您还必须指定 epochValue,它是表示纪元时间的标量 datetime 或字符向量或字符串标量。

示例:使用 2000 年 1 月 1 日午夜作为纪元转换 X

T = datetime(X,'ConvertFrom',...
'epochtime','Epoch','2000-01-01')

'epochtime','Epoch',epochValue,'TicksPerSecond',n

自纪元以来的“时钟计时单元”数。

除指定 epochValue 之外,您还可以指定 n,这是指定每秒“时钟计时单元”数的整数标量。

示例:使用 2000 年 1 月 1 日午夜作为纪元转换 X。此转换将 X 中的值解释为自 2000 年 1 月 1 日午夜以来的毫秒数,因为它指定每秒有 1000 个“时钟计时单元”。

T = datetime(X,'ConvertFrom',...
'epochtime','Epoch','2000-01-01','TicksPerSecond',1000)

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: 'Format','eeee MMMM d, y','TimeZone','local' 对日期时间值应用显示格式并指定本地时区。

输出数组中的值的显示格式,指定为以逗号分隔的对组,其中包含 'Format' 和下列值之一。

Format 的值描述

'default'

使用默认的显示格式。

'preserveinput'

使用输入格式 infmt 指定的格式。如果不指定 infmt,则 datetime 自动确定格式。

字符向量或字符串标量

使用您通过字符向量或字符串标量指定的格式。

如果您指定自己的格式,则必须使用有效的字母标识符。有关有效字母标识符的完整列表,请参阅 Format 属性。

出厂默认格式取决于您的系统区域设置。要更改默认显示格式,请参阅默认 datetime 格式

如果指定 DateStrings 输入,但不指定 'InputFormat' 参数,则 datetime 尝试使用 Format 值解释 DateStrings

示例: 'Format','eeee, MMMM d, yyyy HH:mm:ss' 显示日期时间,例如 Wednesday, April 9, 2014 21:41:06

数据类型: char | string

DateStrings 输入参量值的区域设置,指定为以逗号分隔的对组,其中包含 'Locale' 和一个字符向量或字符串标量。Locale 值确定 datetime 如何解释 DateStrings。但是,它不能决定如何显示输出 datetime 值。

Locale 值可以为:

  • "system",用于指定您的系统区域设置。

  • xx_YY 形式的字符串标量或字符向量,其中 xx 是用于指定语言的小写 ISO 639-1 双字母代码,YY 是用于指定国家/地区的大写 ISO 3166-1 alpha-2 代码。

下表列出了区域设置的某些常用值。

区域设置 语言国家/地区
"de_DE"德语德国
"en_GB"英语英国
"en_US"英语美国
"es_ES"西班牙语西班牙
"fr_FR"法语法国
"it_IT"意大利语意大利
"ja_JP"日语日本
"ko_KR"韩语韩国
"nl_NL"荷兰荷兰
"zh_CN"简体中文中国

仅在使用 DateStrings 输入参量时才能使用 'Locale' 名称-值对组。

示例: 'Locale',"de_DE"

注意

Locale 值确定如何解释输入文本值。输出日期时间值始终以指定的语言显示,该语言通过预设项窗口中的日期时间格式部分中的区域设置选项指定。

数据类型: char | string

双字符年份所在的 100 年日期范围的起始年份,指定为包含 'PivotYear' 和整数的逗号分隔对组。使用基准年份来解释将年份指定为两个字符的日期。即,仅当 infmt 参量包括 yyy 时,基准年份才有效。

仅在使用 DateStrings 输入参量时才能使用 'PivotYear' 名称-值对组。

示例: 'PivotYear',1900

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

时区,指定为以逗号分隔的对组,其中包含 'TimeZone' 和一个指定时区的字符向量或字符串标量。

datetime 函数使用 'TimeZone' 的值来解释输入数据,并设置输出数组的 TimeZone 属性。如果输入数据是包括时区的字符向量或字符串,则 datetime 函数将所有值转换为指定的时区。

有关详细信息和时区列表,请参阅 TimeZone 属性。

数据类型: char | string

属性

全部展开

显示格式,指定为 'default'、字符向量或字符串标量。

Format 的值描述

'default'

使用默认的显示格式。

字符向量或字符串标量

使用您通过字符向量或字符串标量指定的格式。

如果您指定自己的格式,则它必须使用与 Unicode® 区域设置数据标记语言 (LDML) 中有关日期和时间的标准对应的有效字母标识符。有关 LDML 的详细信息,请参阅 Unicode 技术标准 #35,尤其是日期字段符号表

示例: 'eeee, MMMM d, yyyy HH:mm:ss' 显示日期时间,例如 Wednesday, April 9, 2014 21:41:06

要分隔字段,可以包括非字母字符,例如连字符、空格、冒号或任何非 ASCII 字符。要将字母 A-Za-z 作为字面字符包括在格式中,请将它们放在单引号内。

示例: 'uuuu-MM-dd''T''HH:mm:ss' 显示日期时间,例如 2014-04-09T21:41:06

注意

datetime 接受的字母标识符与 datestrdatenumdatevec 函数使用的标识符不同。

出厂默认格式取决于您的系统区域设置。要更改默认显示格式,请参阅默认 datetime 格式

常用格式示例

下表列出了常用的显示格式。这些示例显示纽约市 2014 年 4 月 9 日星期三晚上 9:41:06.12345 的格式化输出。

Format 的值示例
'yyyy-MM-dd'2014-04-09
'dd/MM/yyyy'09/04/2014
'dd.MM.yyyy'09.04.2014
'yyyy年 MM月 dd日'2014年 04月 09日(日语区域设置的字符,ja_JP
'MMMM d, yyyy'April 9, 2014
'eeee, MMMM d, yyyy h:mm a'Wednesday, April 9, 2014 9:41 PM
'MMMM d, yyyy HH:mm:ss Z'April 9, 2014 21:41:06 -0400
'yyyy-MM-dd''T''HH:mmXXX'2014-04-09T21:41-04:00
'yyyy-MM-dd HH:mm:ss.SSS'2014-04-09 21:41:06.123

所有日期时间格式

使用这些标识符指定日期时间字段的显示格式。显示格式显示纽约市 2014 年 4 月 9 日星期三晚上 9:41:06.12345 的输出。

字母标识符描述显示
G年代CE
y年份,没有前导零。请参阅紧随此表后的“注释”。2014
yy年份,使用最后两位数。请参阅紧随此表后的“注释”。14
yyy, yyyy ...年份,至少使用 'y' 实例数指定的位数对于年份 2014,'yyy' 显示 2014,而 'yyyyy' 则显示 02014
u, uu, ...ISO 年份。单个数字来指定年份。ISO 年份值将正数值分配给 CE 年份,将负数值分配给 BCE 年份,1 BCE 表示年份 0。2014
Q季度,使用一位数2
QQ季度,使用两位数02
QQQ季度,缩写2 季度
QQQQ季度,全名第二季度
M月份,使用一位或两位数字4
MM月份,使用两位数字04
MMM月份,缩写名称四月
MMMM月份,全名四月
MMMMM月份,首字母大写A
W一月中的第几周,使用一位数2
d一月中的第几天,使用一位或两位数9
dd一月中的第几天,使用两位数09
D一年中的第几天,使用一位、两位或三位数99
DD一年中的第几天,使用两位数99
DDD一年中的第几天,使用三位数099
e一周中的星期几,使用一位或两位数的数值。4,星期日是一周中的第一天。
ee一周中的星期几,使用两位数字04
eee星期几,缩写名称Wed
eeee星期几,全名Wednesday
eeeee星期几,使用一位大写数字W
a一天中的时段(上午或下午)下午
h小时,采用 12 小时制格式,使用一位或两位数9
hh小时,采用 12 小时制格式,使用两位数09
H小时,采用 24 小时制格式,使用一位或两位数21
HH小时,采用 24 小时制格式,使用两位数21
m分钟,使用一位或两位数41
mm分钟,使用两位数41
s秒,使用一位或两位数6
ss秒,使用两位数06
S, SS, ..., SSSSSSSSS小数秒,使用 'S' 个数所指定的位数(最多 9 位)。'SSS' 将 6.12345 秒截断为 6.123

注意

  • 如果您读取两位年数并将格式指定为 yyy,则基准年份确定该年所属的世纪。

  • 如果您读取日期数字,而您指定的格式同时包含日期 (D) 和公历年 (y) 的标识符,则 datetime 可能无法正确读取日期数字。请使用 ISO 年份 (u) 来代替 y

  • 使用一个或多个 u 字符而非 y 字符在使用接近零的年数时解释年份。

  • 144683 年 CE 之后或 140743 BCE 之前的日期时间值仅显示年数字,而不管指定的 Format 值为何。

时区偏移量格式

使用这些标识符指定时区偏移量的显示格式。时区偏移量是指具体日期时间与 UTC 之间相差的时间量。时区设有确定偏移量的规则,偏移量在一年中的不同时间会有所差异。在想要确保明确显示时间分量时,在显示格式中包括日期时间数组的时区偏移量标识符。

字母标识符描述显示
z时区偏移量的缩写名称。如果此值不可用,则时区偏移量使用短 UTC 格式,例如 UTC-4EDT
ZISO 8601 基本格式,带有小时、分钟和可选的秒字段。-0400
ZZZZ长 UTC 格式。UTC-04:00
ZZZZZISO 8601 扩展格式,带有小时、分钟和可选的秒字段。以 ISO 8601 标准规定的 UTC 指示符 "Z" 的形式来显示与零时区的偏移量。-04:00
xXISO 8601 基本格式,带有小时字段和可选的分钟字段。如果您指定 X,则以 ISO 8601 标准规定的 UTC 指示符“Z”的形式来显示与零时区的偏移量。-04
xxXXISO 8601 基本格式,带有小时和分钟字段。如果您指定 XX,则以 ISO 8601 标准规定的 UTC 指示符“Z”的形式来显示与零时区的偏移量。-0400
xxxXXXISO 8601 扩展格式,带有小时和分钟字段。如果您指定 XXX,则以 ISO 8601 标准规定的 UTC 指示符“Z”的形式来显示与零时区的偏移量。-04:00
xxxxXXXXISO 8601 基本格式,带有小时、分钟和可选的秒字段。如果您指定 XXXX,则以 ISO 8601 标准规定的 UTC 指示符“Z”的形式来显示与零时区的偏移量。-0400
xxxxxXXXXXISO 8601 扩展格式,带有小时、分钟和可选的秒字段。如果您指定 XXXXX,则以 ISO 8601 标准规定的 UTC 指示符“Z”的形式来显示与零时区的偏移量。-04:00

时区,指定为字符向量或字符串标量。创建 datetime 数组后,可以使用此属性更改时区。

为了设置时区和计算时区偏移量,datetime 数据类型使用由互联网号码分配局 (IANA) 在 IANA Time Zone Database 中提供的代码和数据。datetime 当前使用的版本包含 IANA 提供的最新更新。(要获取 datetime 使用的版本,请返回 timezones 函数的第二个输出。)

TimeZone 可以为:

  • '',用于创建不属于特定时区的“未设置时区的”datetime 数组。

  • IANA 时区数据库中的时区地区的名称,例如 'America/Los_Angeles'。时区地区的名称根据在地理区域观察到的情况,考虑了其标准时和夏令时与 UTC 之间的偏移量的当前和历史规则。

  • +HH:mm-HH:mm 形式的 ISO 8601 字符向量(例如 '+01:00'),以指定与 UTC 存在固定偏移量的时区。

  • 'UTC',用于按协调世界时创建 datetime 数组。

  • 'UTCLeapSeconds',用于按协调世界时创建一个 datetime 数组,该数组考虑闰秒。有关 datetime 数据类型支持的闰秒列表,请参阅 leapseconds

  • 'local',用于按系统时区创建 datetime 数组。查询 TimeZone 属性时,返回 IANA 值。

下表列出了 IANA 时区数据库中的时区地区的某些通用名称。

TimeZone 的值UTC 偏移量UTC DST 偏移量
'Africa/Johannesburg'+02:00+02:00
'America/Chicago'−06:00−05:00
'America/Denver'−07:00−06:00
'America/Los_Angeles'−08:00−07:00
'America/New_York'−05:00−04:00
'America/Sao_Paulo'−03:00−02:00
'Asia/Hong_Kong'+08:00+08:00
'Asia/Kolkata'+05:30+05:30
'Asia/Tokyo'+09:00+09:00
'Australia/Sydney'+10:00+11:00
'Europe/London'+00:00+01:00
'Europe/Zurich'+01:00+02:00

数据类型: char | string

datetime 数组中每个值的年份数,指定为大小和形状与 datetime 数组相同的数值数组。每个年份数都是一个基于 ISO 日历的整数值。当前时代中的年份是正数,上一个时代中的年份是零或负数。例如,年份数 1 BCE 为 0。

如果为发生在闰日(2 月 29 日)的 datetime 值将 Year 属性设置为非闰年,则 DayMonth 属性会更改为 3 月 1 日。

datetime 数组中的每个值的月份值,指定为大小和形状与 datetime 数组相同的数值数组。每个月份值都是一个从 1 到 12 的整数值。如果设置的值不在该范围内,则相应地调整 Year 属性,并且 Month 属性保留在 1 到 12 范围内。例如,第 0 个月对应于上一年的第 12 个月。对于历史日期,月份值基于前公历日历。

datetime 数组中每个值的月中日期值,指定为大小和形状与 datetime 数组相同的数值数组。每个月中日期值都是一个介于 1 到 28、29、30 或 31 的整数值,具体取决于月和年。如果设置的值不在该范围内,则相应地调整 MonthYear 属性,并且 Day 属性位于恰当范围内。例如,第 0 天对应于上个月的最后一天。对于历史日期,日期值基于前公历日历。

datetime 数组中每个值的小时值,指定为大小和形状与 datetime 数组相同的数值数组。每个小时值都是一个从 0 到 23 的整数值。如果设置的值不在该范围内,则相应地调整 DayMonthYear 属性,并且 Hour 属性位于恰当范围内。例如,第 -1 小时对应于上一天的第 23 个小时。

以下条件适用于具有特定时区(遵守夏令时)的日期时间数组:

  • 如果您为 Hour 属性指定的值会产生一个在夏令时开始时的间隔期间不存在的日期时间,则 Hour 属性的值会调整为下一小时。

  • 如果您为 Hour 属性指定的值会产生一个在夏令时结束时的交叠期间存在多义性的日期时间,则该日期时间会调整为该小时的两个时间(采用标准时间)中的第二个。

datetime 数组中每个值的分钟值,指定为大小和形状与 datetime 数组相同的数值数组。每个分钟值都是一个从 0 到 59 的整数值。如果指定的值不在该范围内,则相应地调整 HourDayMonthYear 属性,并且 Minute 属性位于恰当范围内。例如,第 -1 分钟对应于上一个小时的第 59 分钟。

datetime 数组中每个值的秒值,指定为大小和形状与 datetime 数组相同的数值数组。每个秒值都是一个通常介于 0 和 60 范围中的浮点值。如果设置的值不在该范围内,则相应地调整 MinuteHourDayMonthYear 属性,并且 Second 属性位于恰当范围内。例如,第 -1 秒对应于上一个小时的第 59 秒。

一个 datetime 数组,'UTCLeapSeconds'TimeZone 值的范围为从 0 到小于 61 的秒数。从 60 到 61 的值表示发生在闰秒期间的日期时间。(有关 datetime 数据类型支持的闰秒列表,请参阅 leapseconds。)

此 属性 为只读。

系统时区设置,指定为字符向量或字符串标量。该时区设置由运行 MATLAB® 的系统决定。

示例: America/New_York

示例

全部折叠

在本地系统时区中指定当前日期时间。

t = datetime('now','TimeZone','local','Format','d-MMM-y HH:mm:ss Z')
t = datetime
   16-Oct-2023 19:09:34 -0400

在韩国首尔表示的时区中指定当前日期时间。

t = datetime('now','TimeZone','Asia/Seoul','Format','d-MMM-y HH:mm:ss Z')
t = datetime
   17-Oct-2023 08:09:34 +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® 日期数字组成的示例数组,这些日期数字表示自 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

提示

扩展功能

基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

版本历史记录

在 R2014b 中推出

全部展开