Преобразование вектора даты возвращает неожиданный Вывод

Поскольку вектор даты 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-Mar-0008'. Кроме того, datestr преобразовывает следующие пять элементов в строки даты.

При преобразовании такого вектора даты в вектор символов сначала преобразуйте его в последовательный номер даты с помощью datenum. Затем преобразуйте номер даты в вектор символов с помощью datestr:

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

ds =

05-Nov-3000 10:32:56

При преобразовании дат в векторы символов datestr интерпретирует вход или как векторы даты или как последовательные числа даты, использующие эвристическое правило. Считайте m-by-6 матрицей. datestr интерпретирует матрицу как векторы даты m когда:

  • Первые пять столбцов содержат целые числа.

  • Абсолютное значение суммы каждой строки находится в области значений 1500–2500.

Если любое условие является ложным для какой-либо строки, то datestr интерпретирует m-by-6 матрица как m-by-6 последовательные числа даты.

Обычно, даты с годами в области значений 1700–2300 интерпретированы как векторы даты. Однако datestr может интерпретировать строки с месяцем, днем, часом, минутой или вторыми значениями вне их нормальных областей значений как последовательные числа даты. Например, datestr правильно интерпретирует следующий вектор даты в течение года 2014:

datestr([2014 06 21 10 51 00])

ans =

21-Jun-2014 10:51:00

Но, учитывая дневное значение вне типичной области значений (1–31), datestr возвращает дату каждого элемента вектора:

datestr([2014 06 2110 10 51 00])

ans =

06-Jul-0005
06-Jan-0000
10-Oct-0005
10-Jan-0000
20-Feb-0000
00-Jan-0000

Когда у вас есть матрица векторов даты, которые datestr может интерпретировать неправильно как последовательные числа даты, сначала преобразовать матрицу в последовательные числа даты с помощью datenum. Затем используйте datestr, чтобы преобразовать числа даты.

Когда у вас есть матрица последовательных чисел даты, которые datestr может интерпретировать как векторы даты, сначала преобразовать матрицу в вектор-столбец. Затем используйте datestr, чтобы преобразовать вектор-столбец.