Примечание
Лучше всего использовать datetime значения для представления точек времени, а не векторов даты. В отличие от векторов даты, datetime значения отображаются в удобочитаемом для человека формате, часто избегая необходимости преобразования в текст. Если требуется преобразовать вектор даты в текст, рекомендуется сначала преобразовать его в datetime значение, а затем для преобразования datetime значение в текст с помощью string или char функции. В то время как можно преобразовать векторы даты в текст непосредственно с помощью datestr , вы можете получить неожиданные результаты, как описано в этом разделе.
Так как вектор даты является вектором 1 на 6 строк чисел, datestr функция может интерпретировать векторы входных дат как векторы серийных номеров дат и возвращать неожиданные выходные данные. Или он может интерпретировать векторы серийных номеров дат как векторы дат. Эта неоднозначность существует, поскольку datestr имеет эвристическое правило для интерпретации вектора строки 1 на 6 как вектора даты или вектора из шести порядковых номеров дат. Та же неоднозначность применима к входам, которые являются m-на-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-янв-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-на-6 матрица. datestr функция интерпретирует матрицу как m векторы дат, когда:
Первые пять столбцов содержат целые числа.
Абсолютное значение суммы каждой строки находится в диапазоне 1500-2500.
Если любое условие имеет значение false, то для любой строки datestr интерпретирует m-by-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 как 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