Примечание
Лучшая практика состоит в том, чтобы использовать datetime
значения, чтобы представлять моменты времени, а не векторы даты. В отличие от векторов даты, datetime
значения отображаются в человекочитаемом формате, часто избегая потребности в преобразовании в текст. Если необходимо преобразовать вектор даты в текст, лучшая практика состоит в том, чтобы сначала преобразовать его в a 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
преобразует следующие пять элементов, как будто они также были последовательными числами даты.
Существует два метода для преобразования такого вектора даты к тексту.
Рекомендуемый метод должен преобразовать вектор даты в a 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.
Если любое условие является ложным, для какой-либо строки, то datestr
интерпретирует m
- 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