来源:https://ww2.mathworks.cn/help/matlab/ref/datestr.html?searchHighlight=datestr&s_tid=doc_srchtitle
datestr
语法
说明
datestr 函数创建一个字符数组,用来显示一个或多个时间点。但是,表示时间点的最佳方式是使用 datetime 数据类型。
将输入数组 DateString = datestr(t)t 中的日期时间值转换为表示日期和时间的文本。但是,您也可以使用 char、cellstr 或 string 函数将 datetime 值表示为文本。
datestr 函数返回包含 m 行的字符数组,其中 m 是 t 中的日期时间值的总数。默认情况下,datestr 以 day-month-year hour:minute:second 格式返回文本。如果 hour:minute:second 是 00:00:00,则返回的文本的格式为 day-month-year。
将日期向量转换为表示日期和时间的文本。DateString = datestr(DateVector)datestr 函数返回包含 m 行的字符数组,其中 m 是 DateVector 中的日期向量的总数。
将日期序列值转换为表示日期和时间的文本。DateString = datestr(DateNumber)datestr 函数返回包含 m 行的字符数组,其中 m 是 DateNumber 中的日期值的总数。
使用 DateString = datestr(___,formatOut)formatOut 指定输出文本的格式。您可以将 formatOut 与上述语法中的任何输入参数结合使用。
将 DateString = datestr(DateStringIn)DateStringIn 转换为 day-month-year hour:minute:second 格式的文本。以 DateStringIn 表示的所有日期和时间必须具有相同的格式。
以 DateString = datestr(DateStringIn,formatOut,PivotYear)formatOut 指定的格式将 DateStringIn 转换为 DateString,并使用可选的 PivotYear 解释以双字符形式指定年份的文本。
返回以当前区域设置的语言表示的日期。此语言是您通过计算机的操作系统选择的语言。如果参数列表中不包括 DateString = datestr(___,'local')'local',则 datestr 以默认语言(美国英语)返回文本。'local' 可与上述的任何语法结合使用。'local' 参数必须排在参数序列的最后。
示例
将日期时间数组转换为日期字符串
t = [datetime('now');datetime('tomorrow')]
t = 2x1 datetime array
03-Feb-2019 10:13:35
04-Feb-2019 00:00:00
DateString = datestr(t)
DateString = 2x20 char array '03-Feb-2019 10:13:35' '04-Feb-2019 00:00:00'
datestr 返回表示日期和时间的文本,其格式为 day-month-year hour:minute:second。
将日期向量转换为文本
DateVector = [2009,4,2,11,7,18];
datestr(DateVector)
ans = '02-Apr-2009 11:07:18'
datestr 以默认格式返回表示日期和时间的文本。
将日期和时间转换为特定格式
以 mm/dd/yy 格式设置当前日期的格式。
可以使用符号标识符指定此格式。
formatOut = 'mm/dd/yy';
datestr(now,formatOut)
ans = '02/03/19'
您也可以使用数值标识符指定此格式。
formatOut = 2;
datestr(now,formatOut)
ans = '02/03/19'
可以重新设置日期和时间的格式,也可以显示毫秒。
dt = datestr(now,'mmmm dd, yyyy HH:MM:SS.FFF AM')
dt = 'February 03, 2019 10:13:12.086 AM'
将 12 小时制时间字符串转换为等效的 24 小时制形式
将 12 小时制时间 05:32 p.m. 转换为其等效的 24 小时制形式。
datestr('05:32 PM','HH:MM')
ans = '17:32'
将 24 小时制时间 05:32 转换为其等效的 12 小时制形式。
datestr('05:32','HH:MM PM')
ans = ' 5:32 AM'
在 formatOut 输出文本中使用 AM 或 PM 不影响会实际成为文本的一部分的字符;它们只确定是否包括这些字符。MATLAB® 基于输入的时间选择 AM 或 PM。
从自定义格式转换日期字符串
在 datestr 内调用 datenum 以指定表示日期的输入文本的格式。
formatOut = 'dd mmm yyyy';
datestr(datenum('16-04-55','dd-mm-yy',1900),formatOut)
ans = '16 Apr 1955'
转换多个日期字符串
以元胞数组传递多个表示日期的字符向量来进行转换。
所有输入日期必须使用相同的格式。例如,以下命令便传递了三个全部使用 mm/dd/yyyy 格式的日期。
datestr(datenum({'09/16/2007';'05/14/1996';'11/29/2010'}, ... 'mm/dd/yyyy'))
ans = 3x11 char array
'16-Sep-2007'
'14-May-1996'
'29-Nov-2010'
datestr 以 day-month-year 格式返回由转换后的日期构成的一个字符数组。
使用不在正常范围内的值转换日期字符串
在 datestr 内调用 datenum,为下面不在正常范围内的日期 (month=13) 返回预期值。
datestr(datenum('13/24/88','mm/dd/yy'))
ans = '24-Jan-1989'
使用基准年份
更改基准年份以更改年份范围。
使用 1900 作为基准年份。
DateStringIn = '4/16/55';
formatOut = 1;
PivotYear = 1900;
datestr(DateStringIn,formatOut,PivotYear)
ans = '16-Apr-1955'
对于同一日期,使用基准年份 2000。
PivotYear = 2000;
datestr(DateStringIn,formatOut,PivotYear)
ans = '16-Apr-2055'
以本地语言返回日期字符串
以当前区域设置的语言将日期值转换为文本。
在法语区域设置中使用 'local' 参数。
DateNumber = 725935;
formatOut = 'mmmm-dd-yyyy';
str = datestr(DateNumber,formatOut,'local')
str = Juillet-17-1987
在不指定 'local' 的条件下执行同一调用。
str = datestr(DateNumber,formatOut)
str = July-17-1987
在本例中,输出默认为英语语言。
输入参数
t - 日期和时间
datetime 数组
日期和时间,指定为 datetime 数组。
数据类型: datetime
DateVector - 日期向量
矩阵
日期向量,指定为 m×6 矩阵,其中 m 是完整(六个元素)日期向量的数目。DateVector 的每个元素必须为正整数或负整数值,但秒元素例外,它可以为小数。如果某元素不在常规范围内,则 datestr 会同时调整该日期向量元素及其前面的元素。例如,如果分钟元素为 70,则 datestr 会将小时元素调整 1 并将分钟元素设置为 10。如果分钟元素为 -15,则 datestr 会将小时元素减少 1 并将分钟元素设置为 45。月份值是一个例外。datestr 将小于 1 的月份值设置为 1。
示例: [2003,10,24,12,45,07]
数据类型: double
DateNumber - 日期序列值
正双精度数的数组
日期序列值,指定为正双精度数的数组。
示例: 731878
数据类型: double
formatOut - 表示日期和时间的输出的格式
-1 (默认) | 字符向量 | 字符串标量 | 整数
表示日期和时间的输出的格式,指定为由符号标识符组成的字符向量或字符串标量,或者与预定义的格式对应的整数。如果不指定 formatOut,datestr 将返回具有默认格式 dd-mmm-yyyy HH:MM:SS (day-month-year hour:minute:second) 的文本。默认情况下,如果 HH:MM:SS = 00:00:00,则返回的文本的格式为 dd-mmm-yyyy。
下表显示了可用于构造 formatOut 字符向量的符号标识符。可以使用连字符、空格或冒号等字符来分隔字段。
注意
描述日期和时间格式的符号标识符不同于描述 datetime 数组的显示格式的标识符。
| 符号标识符 |
说明 |
示例 |
|---|---|---|
|
|
完整年份 |
|
|
|
两位数年份 |
|
|
|
使用字母 |
|
|
|
使用全名的月份 |
|
|
|
使用前三个字母的月份 |
|
|
|
两位数月份 |
|
|
|
使用大写首字母表示月份 |
|
|
|
使用全名的日期 |
|
|
|
使用前三个字母的日期 |
|
|
|
两位数日期 |
|
|
|
使用大写首字母表示日期 |
|
|
|
两位数小时 |
|
|
|
两位数分钟 |
|
|
|
两位数秒 |
|
|
|
三位数毫秒 |
|
|
|
在表示时间的文本中插入的 |
|
formatOut 字符向量必须遵循以下原则:
-
每个字段只能指定一次。例如,不能使用
'yy-mmm-dd-m',因为它有两个月份标识符。一种例外情况是,可以将一个dd实例与其他日期标识符的任何一个实例结合使用。例如,'dddd mmm dd yyyy'是有效输入。 -
当您使用
AM或PM时,还需要提供HH字段。 -
QQ只能单独使用或与年份设定符一起使用。
下表列出了可与 datestr 一起使用的预定义日期格式。
| 数值标识符 |
日期和时间格式 |
示例 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DateStringIn - 要转换的表示日期和时间的文本
字符向量 | 元胞数组 | 字符串数组
要转换的表示日期和时间的文本,指定为单个字符向量、字符向量元胞数组或字符串数组,其中每一行对应一个日期和时间。
datestr 将双字符年份(例如 '79')视为处于以当前年份为中心的 100 年范围内。
表示日期和时间的所有文本的日期格式必须相同,并且它们必须为下列日期格式之一。
| 表示日期和时间的文本的格式 |
示例 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
注意
在从一种日期和时间格式转换为另一种日期和时间时,首先将这些文本传递到 datenum 函数,以便指定输入的格式。此方法可确保正确解释输入日期和时间的格式。例如,请参阅从自定义格式转换日期字符串。
PivotYear - 100 年日期范围的起始年份
现在减去 50 年 (默认) | 整数
双字符年份所在的 100 年日期范围的起始年份,指定为整数。使用基准年份来解释将年份指定为两个字符的日期。
如果 formatIn 包含一天中的时间,则将根据当前日期、月份和年份的当前时间来计算基准年份。否则,将根据当前日期、月份和年份的午夜来进行计算。
示例: 2000
注意
如果输入日期格式指定四个字符的年份,则后两个字符将被截断,由前两个字符指定年份。例如,如果日期和基准年份指定为 ('25122015','ddmmyyyy',2000),则生成的日期为 25-12-2020,而不是 25-12-2015。
数据类型: double
输出参数
DateString - 表示日期和时间的文本
字符向量 | 二维字符数组
表示日期和时间的文本,返回包含 m 行的字符数组,其中 m 是输入日期和时间的总数。默认输出格式为 dd-mmm-yyyy HH:MM:SS (day-month-year hour:minute:second),仅当小时、分钟和秒均为 0 时,才会隐藏 HH:MM:SS 部分。
提示
-
要转换未采用预定义的 MATLAB® 日期格式的文本,需先用
datenum或datevec函数将文本转换为日期值。
