Примечание
Лучшая практика - использовать 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