Примечание
Лучшая практика - использовать datetime значения для представления точек во времени, а не векторов дат. В отличие от векторов дат, datetime значения отображаются в читаемом человеком формате, часто избегая необходимости преобразования в текст. Если вам нужно преобразовать вектор даты в текст, лучшая практика - сначала преобразовать его в datetime значение и затем, чтобы преобразовать datetime значение текста при помощи string или char функций. В то время как вы можете преобразовать векторы дат в текст непосредственно с помощью datestr функция, вы можете получить неожиданные результаты, как описано в этом разделе.
Поскольку вектор даты является вектором-строкой чисел 1 на 6, datestr функция может интерпретировать вход векторы дат как векторы серийных номеров дат и вернуть неожиданные выходы. Или он может интерпретировать векторы серийных номеров дат как векторы дат. Эта неоднозначность существует, потому что datestr имеет эвристическое правило для интерпретации вектора-строки 1 на 6 как вектора дат или вектора с шестью серийными номерами дат. Та же неоднозначность применяется к входам, которые m-by-6 числовых матриц, где каждая строка может быть интерпретирована как вектор даты или как шесть серийных номеров даты.
Например, рассмотрим вектор даты, который включает в себя год 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' (дата - 3000 дней после 0-Jan-0000). Также, 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-by-6 матрица. datestr функция интерпретирует матрицу как m векторы дат, когда:
Первые пять столбцов содержат целые числа.
Абсолютное значение суммы каждой строки находится в области значений 1500-2500.
Если любое условие ложно, для любой строки, то datestr интерпретирует m-by-6 матрица как m-by-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 как 2110-й день с начала июня 2020 года.
d = datetime([2020 06 2110 10 51 00])
d = datetime 11-Mar-2026 10:51:00
Когда у вас есть матрица векторов дат, которые datestr может неправильно интерпретировать как серийные номера дат, преобразовать матрицу при помощи datetime или datenum функций. Затем преобразуйте эти значения в текст.
Когда у вас есть матрица серийных номеров дат, которые datestr можно интерпретировать как векторы дат, сначала преобразовать матрицу в вектор-столбец. Затем используйте datestr для преобразования вектора-столбца.
char | datenum | datestr | datetime | datevec | string