例如,假设有一个包含年份 3000 的日期向量。此年份超出了 datestr 解释为日期向量元素的年份的范围。因此,输入被解释为一个 1×6 日期序列值向量。
d = datestr([3000 11 05 10 32 56])
d =
6×11 char array
'18-Mar-0008'
'11-Jan-0000'
'05-Jan-0000'
'10-Jan-0000'
'01-Feb-0000'
'25-Feb-0000'
此处,datestr 将 3000 解释为一个日期序列值,并将其转换为文本 ‘18-Mar-0008’(0000 年 1 月 0 日之后第 3000 天的日期)。另外,datestr 还转换接下来的五个元素,就好像它们也是日期序列值一样。
有两种方法可以将这样的日期向量转换为文本。
推荐方法是将日期向量转换为 datetime 值。然后使用 char、cellstr 或 string 函数对其进行转换。datetime 函数始终将 1×6 数值向量视为日期向量。
dt = datetime([3000 11 05 10 32 56]);
ds = string(dt)
dt =
"05-Nov-3000 10:32:56"
或者,使用 datenum 函数将其转换为日期序列值。然后,再使用 datestr 将日期数字转换为字符向量。
dn = datenum([3000 11 05 10 32 56]);
ds = datestr(dn)
ds =
'05-Nov-3000 10:32:56'
在将日期转换为文本时,datestr 会使用启发式规则将输入解释为日期向量或日期序列值。以一个 m×6 矩阵为例。在以下情况下,datestr 函数将该矩阵解释为 m 个日期向量:
前五列包含整数。
每一行之和的绝对值位于 1500–2500 范围内。
对于任何一行,如果上述任意一个条件为 false,则 datestr 会将该 m×6 矩阵解释为包含日期序列值的 m×6 矩阵。
通常,1700–2300 范围内带有年份的日期将被解释为日期向量。但是,datestr 可能会将月份值、日期值、小时值、分钟值或秒值超出正常范围的行解释为日期序列值。例如,datestr 能够正确解释年份 2020 的以下日期向量:
d = datestr([2020 06 21 10 51 00])
d =
'21-Jun-2020 10:51:00'
但是,给定一个超出通常范围 (1–31) 的日期值,datestr 则会为该向量中的每个元素返回一个日期值。
d = datestr([2020 06 2110 10 51 00])
d =
6×11 char array
'12-Jul-0005'
'06-Jan-0000'
'10-Oct-0005'
'10-Jan-0000'
'20-Feb-0000'
'00-Jan-0000'
同样,datetime 函数始终将数值输入视为日期向量。在这种情况下,它会计算适当的日期,将 2110 解释为自 2020 年 6 月初以来的第 2110 天。
d = datetime([2020 06 2110 10 51 00])
d =
datetime
11-Mar-2026 10:51:00
如果您有一个 datestr 可能错误地解释为日期序列值的日期向量矩阵,请使用 datetime 或 datenum 函数转换该矩阵。然后将这些值转换为文本。
如果您具有一个 datestr 可能解释为日期向量的日期序列值矩阵,请首先将该矩阵转换为列向量。然后,再使用 datestr 转换列向量。
该博文为原创文章,未经博主同意不得转。
本文章博客地址:https://cplusplus.blog.csdn.net/article/details/127909391
上一篇:南阳市十三中:一键回顾2023 高光时刻 南阳市十三中:一键回顾2023 高光时刻
下一篇:半场-曼城暂0-0热刺 鲍勃补射破门被吹热刺半场0射门 热刺以胜利庆祝回家曼城重登榜首 曼城4:1热刺下半场视频