转换日期向量返回意外输出

因为日期向量是1乘6的数字向量,datestr可能将输入日期向量解释为序列日期号的向量,或者反之,并返回意外输出。

考虑一个包含3000年的日期向量。今年超出了那个范围datestr解释为日期向量的元素。因此,输入被解释为一个1 × 6的序列日期数字向量:

datestr([3000 11 05 10 32 56]) ans = 18-Mar-0008 11- jan -0000 05- jan -0000 10- jan -0000 01-Feb-0000 25-Feb-0000

在这里datestr将3000解释为一个串行日期号,并将其转换为日期字符串“18 - 3月- 0008”.同时,datestr将后面的五个元素转换为日期字符串。

当将这样的日期向量转换为字符向量时,首先使用datenum.然后,使用。将日期号转换为字符向量datestr

Dn = datenum([3000 11 05 10 32 56]);ds = datestr(dn) ds = 05- 11 -3000 10:32:56

将日期转换为字符向量时,datestr使用启发式规则将输入解释为日期向量或序列号日期。考虑一个m6矩阵。datestr将矩阵解释为m向量日期:

  • 前五列包含整数。

  • 每一行的和的绝对值在1500-2500之间。

对于任何一行,如果其中一个条件为假,则datestr解释了m6矩阵为m-by-6序列号日期。

通常,年份在1700-2300之间的日期被解释为日期向量。然而,datestr可以将月、日、时、分或秒值超出正常范围的行解释为序号日期号。例如,datestr正确解释了以下2014年的日期向量:

日期([2014 06 21 10 51 00])ans = 21- 6 -2014 10:51:00

但如果一天的数值超出了典型范围(1-31),datestr返回vector中每个元素的日期:

datestr([2014 06 2110 10 51 50]) ans = 06- 7 -0005 06- 1 -0000 10- 10- 0005 10- 1 -0000 20-Feb-0000 00- 1 -0000

当你有一个由日期向量组成的矩阵datestr可能不正确地解释为串行日期号,首先将矩阵转换为串行日期号使用datenum.然后,用datestr转换日期号。

当你有一个由连续日期号组成的矩阵datestr可以解释为日期向量,首先将矩阵转换为列向量。然后,用datestr转换列向量。