datetime
表示时间点的数组
说明
datetime
数据类型表示时间点,如 2020 年 8 月 24 日上午 10:50:30。datetime
数组指定与数组中存储的每个时间点相关联的年、月、日、小时、分钟和秒分量(使用前 ISO 日历)。
此外,datetime
数组提供:
输出显示和输入文本解析的灵活格式。
存储精确到纳秒的秒数
可处理时区、夏令时和闰秒的属性。
创建对象
语法
描述
返回一个对应于当前日期时间的标量 t
= datetimedatetime
数组。
使用 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(___,Name,Value
)'Format'
名称-值对组参数指定 t
的显示格式。
要在根据文本创建日期时间值时获得最佳性能,请指定 'Format'
或 'InputFormat'
及其相应的值 infmt
。
输入参数
relativeDay
— 相对于当前日期的日期
'yesterday'
| 'today'
| 'tomorrow'
| 'now'
相对于当前日期的日期,指定为以下值之一。
relativeDay 的值 | 描述 |
---|---|
'yesterday' | 上一天日期的午夜 |
'today' | 当前日期的午夜 |
'tomorrow' | 下一天日期的午夜 |
'now' | 当前日期时间 |
DateStrings
— 表示日期时间的文本
字符数组 | 字符向量元胞数组 | 字符串数组
表示日期和时间的文本,指定为字符数组、字符向量元胞数组或字符串数组。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
— 输入文本的格式
字符向量 | 字符串标量
表示日期和时间的输入文本的格式,指定为包含字母标识符的字符向量或字符串标量:
如果
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
属性。
注意
datetime
接受的字母标识符与 datestr
、datenum
和 datevec
函数使用的标识符不同。
数据类型: char
| string
DateVectors
— 日期向量
矩阵
日期向量指定为 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
全为标量或全为列向量,则您可以将输入参数指定为日期向量[Y M D]
。如果
Y
、M
或D
输入的元素不在常规范围内,则datetime
会同时调整该元素及上一输入的同一元素。有关详细信息,请参阅DateVectors
输入参数的说明。
示例: 2003,10,24
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Y,M,D,H,MI,S
— 年、月、日、小时、分钟和秒数组
数值数组
年、月、日、小时、分钟和秒数组,指定为数值数组。这些数组的大小必须相同,或其中任何一项可以为标量。指定小数秒作为秒输入 S
的一部分。Y,M,D,H,MI
数组必须包含整数值。
如果
Y,M,D,H,MI,S
全为标量或全为列向量,则您可以将输入参数指定为日期向量[Y M D H MI S]
。如果
Y
、M
、D
、H
、MI
或S
输入的元素不在常规范围内,则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
— 年、月、日、小时、分钟、秒和毫秒数组
数值数组
年、月、日、小时、分钟、秒和毫秒数组,指定为数值数组。这些数组的大小必须相同,或其中任何一项可以为标量。Y,M,D,H,MI,S
数组必须包含整数值。MS
可以包含毫秒的小数部分。
如果 Y
、M
、D
、H
、MI
、S
或 MS
输入的一个元素不在常规范围内,则 datetime
会同时调整该元素及上一输入的同一元素。有关详细信息,请参阅 DateVectors
输入参数的说明。
示例: 2003,10,24,12,45,07,10.52
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
X
— 数值
数组
数值,指定为数组。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
dateType
— X
中值的类型
'datenum'
| 'excel'
| 'excel1904'
| 'juliandate'
| ...
X
中的值的类型,指定为下列值之一。
|
|
---|---|
| 从 0000 年 1 月 0 日起计的天数(前 ISO 日历)。 |
| 从 1900 年 1 月 0 日起计的天数。 Excel® 日期值舍入为最近的微秒。 请注意:Excel 错误地假设 1900 年是闰年。因此,计算 Excel 日期值时,1900 年 2 月 28 日与 1900 年 3 月 1 日之间因为多了一天而中断。 |
| 从 1904 年 1 月 0 日起计的天数。 Excel 日期值舍入为最近的微秒。 请注意:Excel 错误地假设 1900 年是闰年。因此,计算 Excel 日期值时,1900 年 2 月 28 日与 1900 年 3 月 1 日之间因为多了一天而中断。 |
| 从 UTC 时间公元前 4714 年 11 月 24 日(前公历日历)中午起计的天数。 如果您将 示例:使用纽约的时区转换 T = datetime(X,'ConvertFrom','juliandate',... 'TimeZone','America/New_York') 然后,您可以将 T.TimeZone = '' |
| 从 UTC 时间 1858 年 11 月 17 日午夜起计的天数。 如果您将 示例:使用纽约的时区转换 T = datetime(X,'ConvertFrom','modifiedjuliandate',... 'TimeZone','America/New_York') 然后,您可以将 T.TimeZone = '' |
| 从 UTC 时间 1970 年 1 月 1 日 00:00:00 起计的秒数,不计算闰秒。 如果您将 示例:使用纽约的时区转换 T = datetime(X,'ConvertFrom','posixtime',... 'TimeZone','America/New_York') 然后,您可以将 T.TimeZone = '' |
| 以 YYYYMMDD 数值形式表示的日期。例如, |
| 自 UTC 1900 年 1 月 1 日 00:00:00 以来的“时钟计时单元”数,每个时钟计时单元为 2^-32 秒。 |
| 自 UTC 0001 年 1 月 1 日 00:00:00 以来的“时钟计时单元”数,每个时钟计时单元为 100 纳秒。 |
| 自 UTC 1601 年 1 月 1 日 00:00:00 以来的“时钟计时单元”数,每个时钟计时单元为 100 纳秒。 |
| 自 J2000 以来经过的纳秒数。常用数据格式 (CDF) 将 输入 要转换 注意:J2000 是 2000 年 1 月 1 日 12:00 的地球时 (TT)。TT 与 UTC 的不同之处在于两个因素:
因此,J2000 实际上发生在 D = datetime(2000,1,1,11,58,55,816,"TimeZone","UTCLeapSeconds") D = 2000-01-01T11:58:55.816Z 示例:创建一个表示 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
|
| 从纪元开始的秒数。 您还必须指定 示例:使用 2000 年 1 月 1 日午夜作为纪元转换 T = datetime(X,'ConvertFrom',... 'epochtime','Epoch','2000-01-01') |
| 自纪元以来的“时钟计时单元”数。 除指定 示例:使用 2000 年 1 月 1 日午夜作为纪元转换 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
— 显示格式
'default'
| 'preserveinput'
| 字符向量 | 字符串标量
输出数组中的值的显示格式,指定为以逗号分隔的对组,其中包含 'Format'
和下列值之一。
Format 的值 | 描述 |
---|---|
| 使用默认的显示格式。 |
| 使用输入格式 |
字符向量或字符串标量 | 使用您通过字符向量或字符串标量指定的格式。 |
如果您指定自己的格式,则必须使用有效的字母标识符。有关有效字母标识符的完整列表,请参阅 Format
属性。
出厂默认格式取决于您的系统区域设置。要更改默认显示格式,请参阅默认 datetime 格式。
如果指定 DateStrings
输入,但不指定 'InputFormat'
参数,则 datetime
尝试使用 Format
值解释 DateStrings
。
示例: 'Format','eeee, MMMM d, yyyy HH:mm:ss'
显示日期时间,例如 Wednesday, April 9, 2014 21:41:06
。
数据类型: char
| string
Locale
— DateStrings
的区域设置
字符向量 | 字符串标量
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
PivotYear
— 100 年日期范围的起始年份
year(datetime('now'))-50
(默认) | 整数
双字符年份所在的 100 年日期范围的起始年份,指定为包含 'PivotYear'
和整数的逗号分隔对组。使用基准年份来解释将年份指定为两个字符的日期。即,仅当 infmt
参数包括 y
或 yy
时,基准年份才有效。
仅在使用 DateStrings
输入参数时才能使用 'PivotYear'
名称-值对组。
示例: 'PivotYear',1900
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
TimeZone
— 时区
''
(默认) | 字符向量 | 字符串标量
时区,指定为以逗号分隔的对组,其中包含 'TimeZone'
和一个指定时区的字符向量或字符串标量。
datetime
函数使用 'TimeZone'
的值来解释输入数据,并设置输出数组的 TimeZone
属性。如果输入数据是包括时区的字符向量或字符串,则 datetime
函数将所有值转换为指定的时区。
有关详细信息和时区列表,请参阅 TimeZone
属性。
数据类型: char
| string
属性
Format
— 显示格式
'default'
| 字符向量 | 字符串标量
显示格式,指定为 'default'
、字符向量或字符串标量。
Format 的值 | 描述 |
---|---|
| 使用默认的显示格式。 |
字符向量或字符串标量 | 使用您通过字符向量或字符串标量指定的格式。 |
如果您指定自己的格式,则它必须使用与 Unicode® 区域设置数据标记语言 (LDML) 中有关日期和时间的标准对应的有效字母标识符。有关 LDML 的详细信息,请参阅 Unicode 技术标准 #35,尤其是日期字段符号表。
示例: 'eeee, MMMM d, yyyy HH:mm:ss'
显示日期时间,例如 Wednesday, April 9, 2014 21:41:06
。
要分隔字段,可以包括非字母字符,例如连字符、空格、冒号或任何非 ASCII 字符。要将字母 A-Z
和 a-z
作为字面字符包括在格式中,请将它们放在单引号内。
示例: 'uuuu-MM-dd''T''HH:mm:ss'
显示日期时间,例如 2014-04-09T21:41:06
。
注意
datetime
接受的字母标识符与 datestr
、datenum
和 datevec
函数使用的标识符不同。
出厂默认格式取决于您的系统区域设置。要更改默认显示格式,请参阅默认 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 。 |
注意
如果您读取两位年数并将格式指定为
y
或yy
,则基准年份确定该年所属的世纪。如果您读取日期数字,而您指定的格式同时包含日期 (
D
) 和公历年 (y
) 的标识符,则datetime
可能无法正确读取日期数字。请使用 ISO 年份 (u
) 来代替y
。使用一个或多个
u
字符而非y
字符在使用接近零的年数时解释年份。144683 年 CE 之后或 140743 BCE 之前的日期时间值仅显示年数字,而不管指定的
Format
值为何。
时区偏移量格式
使用这些标识符指定时区偏移量的显示格式。时区偏移量是指具体日期时间与 UTC 之间相差的时间量。时区设有确定偏移量的规则,偏移量在一年中的不同时间会有所差异。在想要确保明确显示时间分量时,在显示格式中包括日期时间数组的时区偏移量标识符。
字母标识符 | 描述 | 显示 |
---|---|---|
z | 时区偏移量的缩写名称。如果此值不可用,则时区偏移量使用短 UTC 格式,例如 UTC-4 。 | EDT |
Z | ISO 8601 基本格式,带有小时、分钟和可选的秒字段。 | -0400 |
ZZZZ | 长 UTC 格式。 | UTC-04:00 |
ZZZZZ | ISO 8601 扩展格式,带有小时、分钟和可选的秒字段。以 ISO 8601 标准规定的 UTC 指示符 "Z" 的形式来显示与零时区的偏移量。 | -04:00 |
x 或 X | ISO 8601 基本格式,带有小时字段和可选的分钟字段。如果您指定 X ,则以 ISO 8601 标准规定的 UTC 指示符“Z”的形式来显示与零时区的偏移量。 | -04 |
xx 或 XX | ISO 8601 基本格式,带有小时和分钟字段。如果您指定 XX ,则以 ISO 8601 标准规定的 UTC 指示符“Z”的形式来显示与零时区的偏移量。 | -0400 |
xxx 或 XXX | ISO 8601 扩展格式,带有小时和分钟字段。如果您指定 XXX ,则以 ISO 8601 标准规定的 UTC 指示符“Z”的形式来显示与零时区的偏移量。 | -04:00 |
xxxx 或 XXXX | ISO 8601 基本格式,带有小时、分钟和可选的秒字段。如果您指定 XXXX ,则以 ISO 8601 标准规定的 UTC 指示符“Z”的形式来显示与零时区的偏移量。 | -0400 |
xxxxx 或 XXXXX | ISO 8601 扩展格式,带有小时、分钟和可选的秒字段。如果您指定 XXXXX ,则以 ISO 8601 标准规定的 UTC 指示符“Z”的形式来显示与零时区的偏移量。 | -04:00 |
TimeZone
— 时区
''
(默认) | 字符向量 | 字符串标量
时区,指定为字符向量或字符串标量。创建 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
Year
— 年份数
数值数组
datetime
数组中每个值的年份数,指定为大小和形状与 datetime
数组相同的数值数组。每个年份数都是一个基于 ISO 日历的整数值。当前时代中的年份是正数,上一个时代中的年份是零或负数。例如,年份数 1 BCE 为 0。
如果为发生在闰日(2 月 29 日)的 datetime
值将 Year
属性设置为非闰年,则 Day
和 Month
属性会更改为 3 月 1 日。
Month
— 月份值
数值数组
datetime
数组中的每个值的月份值,指定为大小和形状与 datetime
数组相同的数值数组。每个月份值都是一个从 1 到 12 的整数值。如果设置的值不在该范围内,则相应地调整 Year
属性,并且 Month
属性保留在 1 到 12 范围内。例如,第 0 个月对应于上一年的第 12 个月。对于历史日期,月份值基于前公历日历。
Day
— 月中日期值
数值数组
datetime
数组中每个值的月中日期值,指定为大小和形状与 datetime
数组相同的数值数组。每个月中日期值都是一个介于 1 到 28、29、30 或 31 的整数值,具体取决于月和年。如果设置的值不在该范围内,则相应地调整 Month
和 Year
属性,并且 Day
属性位于恰当范围内。例如,第 0 天对应于上个月的最后一天。对于历史日期,日期值基于前公历日历。
Hour
— 小时数
数值数组
datetime
数组中每个值的小时值,指定为大小和形状与 datetime
数组相同的数值数组。每个小时值都是一个从 0 到 23 的整数值。如果设置的值不在该范围内,则相应地调整 Day
、Month
和 Year
属性,并且 Hour
属性位于恰当范围内。例如,第 -1 小时对应于上一天的第 23 个小时。
以下条件适用于具有特定时区(遵守夏令时)的日期时间数组:
如果您为
Hour
属性指定的值会产生一个在夏令时开始时的间隔期间不存在的日期时间,则Hour
属性的值会调整为下一小时。如果您为
Hour
属性指定的值会产生一个在夏令时结束时的交叠期间存在多义性的日期时间,则该日期时间会调整为该小时的两个时间(采用标准时间)中的第二个。
Minute
— 分钟值
数值数组
datetime
数组中每个值的分钟值,指定为大小和形状与 datetime
数组相同的数值数组。每个分钟值都是一个从 0 到 59 的整数值。如果指定的值不在该范围内,则相应地调整 Hour
、Day
、Month
和 Year
属性,并且 Minute
属性位于恰当范围内。例如,第 -1 分钟对应于上一个小时的第 59 分钟。
Second
— 秒值
数值数组
datetime
数组中每个值的秒值,指定为大小和形状与 datetime
数组相同的数值数组。每个秒值都是一个通常介于 0 和 60 范围中的浮点值。如果设置的值不在该范围内,则相应地调整 Minute
、Hour
、Day
、Month
和 Year
属性,并且 Second
属性位于恰当范围内。例如,第 -1 秒对应于上一个小时的第 59 秒。
一个 datetime
数组,'UTCLeapSeconds'
的 TimeZone
值的范围为从 0 到小于 61 的秒数。从 60 到 61 的值表示发生在闰秒期间的日期时间。(有关 datetime
数据类型支持的闰秒列表,请参阅 leapseconds
。)
SystemTimeZone
— 系统时区设置
字符向量 | 字符串标量
此 属性 为只读。
系统时区设置,指定为字符向量或字符串标量。该时区设置由运行 MATLAB® 的系统决定。
示例: America/New_York
示例
指定特定时区的当前日期时间
在本地系统时区中指定当前日期时间。
t = datetime('now','TimeZone','local','Format','d-MMM-y HH:mm:ss Z')
t = datetime
17-Sep-2022 12:18:56 -0400
在韩国首尔表示的时区中指定当前日期时间。
t = datetime('now','TimeZone','Asia/Seoul','Format','d-MMM-y HH:mm:ss Z')
t = datetime
18-Sep-2022 01:18:56 +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 核心函数的列表,请参阅支持日期和时间数组的核心函数。
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
用法说明和限制:
为字符串数组或元胞数组中的字符向量创建 tall 日期时间数组时,请始终指定输入日期时间格式。
如果您将
'Format'
指定为'preserveinput'
,则 MATLAB 可能需要计算 tall 数组以确定格式。
有关详细信息,请参阅 tall 数组。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
从 R2020a 开始,您可以在 MATLAB 代码中使用
datetime
数组来进行代码生成。有关详细信息,请参阅Code Generation for Datetime Arrays (MATLAB Coder)和代码生成的日期时间数组限制 (MATLAB Coder)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
从
DateStrings
中的文本创建datetime
数组时,请指定输入格式infmt
。
有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2014b 中推出R2020a: 'InputFormat'
标识符 e
、ee
、M
、MM
、Q
和 QQ
不识别名称,而标识符 eee
、MMM
和 QQQ
不识别全名
从 R2020a 开始,当您在 'InputFormat'
名称-值参数中为星期几、月份或季度指定包含一个或两个字母的标识符时,这些标识符不再识别名称。它们只识别数字。
同样,缩写的星期几、月份和季度名称的包含三个字母的标识符不再识别全名。它们只识别缩写。
下表显示这些标识符以及可识别的值和不可识别的值的示例。
标识符 | 识别的示例 | 无法识别的示例 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
在以前的版本中,所有这些包含一个、二个和三个字母的标识符分别识别星期几、月份和季度的缩写和全名。例如,ee
将 Wed
识别为星期三,MM
将 Apr
识别为四月,QQ
将 Q2
识别为第二季度。同样,eee
识别 Wednesday
,MMM
识别 April
,QQQ
识别 2nd quarter
。
有关格式标识符的详细信息,请参阅 datetime
的 Format
属性。
另请参阅
duration
| calendarDuration
| discretize
| NaT
| string
| char
| timezones
| leapseconds
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)