datevec

Преобразуйте дату и время в вектор компонентов

Функция datevec создает числовой массив, значения которого представляют компоненты даты и времени лет, месяцев, дней, часов, минут и секунд. Однако лучший способ представлять моменты времени при помощи типа данных datetime. Лучший способ представлять прошедшее время при помощи типов данных calendarDuration или duration.

Синтаксис

DateVector = datevec(t)
DateVector = datevec(DateNumber)
DateVector = datevec(DateString)
DateVector = datevec(DateString,formatIn)
DateVector = datevec(DateString,PivotYear)
DateVector = datevec(DateString,formatIn,PivotYear)
[Y,M,D,H,MN,S] = datevec(___)

Описание

пример

DateVector = datevec(t) преобразовывает datetime или значения длительности во входном массиве t, чтобы датировать векторы. Функция datevec возвращает m-by-6 матрица, где каждая строка соответствует значению в t.

пример

DateVector = datevec(DateNumber) преобразовывает одно или несколько чисел даты, чтобы датировать векторы. Функция datevec возвращает m-by-6 матрица, содержащая векторы даты m, где m является общим количеством чисел даты в DateNumber.

DateVector = datevec(DateString) преобразовывает текст, представляющий даты и времена, чтобы датировать векторы. Если формат, используемый в тексте, известен, задайте формат как formatIn. Синтаксисы без formatIn значительно медленнее, чем синтаксисы, которые включают его.

пример

DateVector = datevec(DateString,formatIn) использование formatIn, чтобы интерпретировать даты и времена, представленные DateString.

DateVector = datevec(DateString,PivotYear) PivotYear использования, чтобы интерпретировать текст, который задает год как два символа. Если формат, используемый в тексте, известен, задайте формат как formatIn. Синтаксисы без formatIn значительно медленнее, чем синтаксисы, которые включают его.

пример

DateVector = datevec(DateString,formatIn,PivotYear) formatIn использования, чтобы интерпретировать даты и времена, представленные DateString и PivotYear, чтобы интерпретировать текст, который задает год как два символа. Можно задать formatIn и PivotYear в любом порядке.

пример

[Y,M,D,H,MN,S] = datevec(___) возвращает компоненты вектора даты как отдельные переменные Y, M, D, H, MN и S (год, месяц, день, час, минуты и секунды). Функция datevec возвращает миллисекунды как дробную часть (S) секунд вывод.

Примеры

свернуть все

format short g

t = [datetime('now');datetime('tomorrow')]
t = 2x1 datetime array
   21-Feb-2019 20:25:33
   22-Feb-2019 00:00:00

DateVector = datevec(t)
DateVector = 2×6

         2019            2           21           20           25       33.443
         2019            2           22            0            0            0

format short g

n = 733779.651;
datevec(n)
ans = 1×6

         2009            1            6           15           37         26.4

DateString = '28.03.2005';
formatIn = 'dd.mm.yyyy';
datevec(DateString,formatIn)
ans = 1×6

        2005           3          28           0           0           0

datevec возвращает вектор даты для текста, представляющего дату с форматом 'dd.mm.yyyy'.

Передайте несколько дат как векторы символов в массиве ячеек. Все входные даты должны использовать тот же формат.

DateString = {'09/16/2007';'05/14/1996';'11/29/2010'};
formatIn = 'mm/dd/yyyy';
datevec(DateString,formatIn)
ans = 3×6

        2007           9          16           0           0           0
        1996           5          14           0           0           0
        2010          11          29           0           0           0

datevec('11:21:02.647','HH:MM:SS.FFF')
ans = 1×6
103 ×

    2.0190    0.0010    0.0010    0.0110    0.0210    0.0026

В выходном векторе даты миллисекунды являются дробной частью поля секунд. Текст '11:21:02.647' не содержит достаточно информации, чтобы преобразовать в полный вектор даты. Дневное значение по умолчанию к 1, значение по умолчанию месяцев до января и значение по умолчанию лет к текущему году.

Преобразуйте текст, представляющий дату вектору даты использование года центра по умолчанию.

DateString = '12-jun-17';
formatIn = 'dd-mmm-yy';
DateVector = datevec(DateString,formatIn)
DateVector = 1×6

        2017           6          12           0           0           0

Преобразуйте ту же дату в вектор даты использование 1800 как год центра.

DateVector = datevec(DateString,formatIn,1800)
DateVector = 1×6

        1817           6          12           0           0           0

Преобразуйте текст, представляющий дату вектору даты, и возвратите компоненты вектора даты.

[y, m, d, h, mn, s] = datevec('01.02.12','dd.mm.yy')
y = 2012
m = 2
d = 1
h = 0
mn = 0
s = 0

Входные параметры

свернуть все

Даты и времена, заданные как массив datetime или значений длительности.

Типы данных: datetime | duration | calendarDuration

Последовательный номер даты, заданный как массив положительных чисел с двойной точностью.

Пример: 731878

Типы данных: double

Текст, представляющий даты и времена, заданные как символьный массив, где каждая строка содержит текст, представляющий один момент времени как вектор ячейки векторов символов, или как вектор строки. Все строки символьного массива или все элементы вектора ячейки или вектора строки, должны иметь тот же формат.

Пример: '24-Oct-2003 12:45:07'

Пример: ['19-Sep-2013';'20-Sep-2013';'21-Sep-2013']

Пример: {'15-Oct-2010' '20-Nov-2012'}

Если формат, используемый в тексте, известен, необходимо также задать formatIn. Если вы не задаете formatIn, то DateString должен быть в одном из следующих форматов.

Формат текста, представляющего даты и времена

Пример

'dd-mmm-yyyy HH:MM:SS'

01-Mar-2000 15:45:17

'dd-mmm-yyyy'

01-Mar-2000

'mm/dd/yyyy'

03/01/2000

'mm/dd/yy'

03/01/00

'mm/dd'

03/01

'mmm.dd,yyyy HH:MM:SS'

Mar.01,2000 15:45:17

'mmm.dd,yyyy'

Mar.01,2000

'yyyy-mm-dd HH:MM:SS'

2000-03-01 15:45:17

'yyyy-mm-dd'

2000-03-01

'yyyy/mm/dd'

2000/03/01

'HH:MM:SS'

15:45:17

'HH:MM:SS PM'

3:45:17 PM

'HH:MM'

15:45

'HH:MM PM'

3:45 PM

Примечание

Символьные идентификаторы, описывающие форматы даты и времени, отличаются от тех, которые описывают форматы отображения массивов datetime.

Определенные форматы не могут содержать достаточно информации, чтобы преобразовать текстовые представления дат и времен. В тех случаях, часы, минуты, и значение по умолчанию секунд к 0, дневное значение по умолчанию к 1, значение по умолчанию месяцев до января и значение по умолчанию лет к текущему году. datevec и datenum полагают, что 2D символьные годы (например, '79') находятся в пределах 100-летней области значений, сосредоточенной около текущего года.

Когда вы не зададите formatIn, отметьте следующее:

  • Для форматов, которые задают месяц как две цифры (mm), значение месяца не должно быть больше, чем 12.

  • Однако для формата 'mm/dd/yy', если первая запись в тексте больше, чем 12 и вторая запись, меньше чем или равен 12, то datevec полагает, что текст находится в формате 'yy/mm/dd'.

Формат входного текста, представляющего даты и времена, заданные как вектор символов или скаляр строки символьных идентификаторов.

Пример: 'dddd, mmm dd, yyyy'

Следующая таблица показывает символьные идентификаторы, что можно использовать, чтобы создать вектор символов formatIn. Можно включать символы, такие как дефис, пробел или двоеточие, чтобы разделить поля.

Примечание

Символьные идентификаторы, описывающие форматы даты и времени, отличаются от идентификаторов, которые описывают форматы отображения массивов datetime.

Символьный идентификатор

Описание

Пример

yyyy

Год полностью

1990, 2002

yy

Год в двух цифрах

90, 02

QQ

Год четверти с помощью буквы Q и одна цифра

Q1

mmmm

Месяц с помощью полного имени

March, December

mmm

Месяц с помощью сначала три буквы

Mar, Dec

mm

Месяц в двух цифрах

03, 12

m

Месяц с помощью использовал для своей выгоды первую букву

M, D

dddd

День с помощью полного имени

Monday, Tuesday

ddd

День с помощью сначала три буквы

Mon, Tue

dd

День в двух цифрах

05, 20

d

День с помощью использовал для своей выгоды первую букву

M, T

HH

Час в двух цифрах
(никакие начальные нули, когда символьный идентификатор AM или PM используются),

05, 5 AM

MM

Минута в двух цифрах

12, 02

SS

Второй в двух цифрах

07, 59

FFF

Миллисекунда в трех цифрах

057

AM or PM

AM или PM вставляются в текст, представляющий время

3:45:02 PM

Значение formatIn должно следовать этим инструкциям:

  • Вы не можете задать поле несколько раз. Например, вы не можете использовать 'yy-mmm-dd-m', потому что он имеет двухмесячные идентификаторы. Одно исключение к этому - то, что можно объединить один экземпляр dd с одним экземпляром любого из на днях идентификаторов. Например, 'dddd mmm dd yyyy' является допустимым входом.

  • Когда вы используете AM или PM, поле HH также требуется.

  • datevec не принимает форматы, которые включают 'QQ'

Запустите год 100-летнего диапазона дат, в котором 2D символьный год находится, заданный как целое число. Используйте год центра, чтобы интерпретировать даты, которые задают год как два символа.

Если formatIn содержит время суток, год центра вычисляется с текущего времени текущего дня, месяца и года. В противном случае это вычисляется с полуночи текущего дня, месяца и года.

Пример: 2000

Примечание

Если входной формат даты задает год с четырьмя символами, то последние два символа являются усеченными, и первые два символа задают год. Например, если дата и год центра задана как ('25122015','ddmmyyyy',2000), то получившейся датой является 25-12-2020, не 25-12-2015.

Типы данных: double

Выходные аргументы

свернуть все

Векторы даты, возвращенные как m-by-6 матрица, где каждая строка соответствует одному вектору даты и m, являются общим количеством входных чисел даты или векторов символов, представляющих даты и времена.

Компоненты вектора даты (год, месяц, день, час, минута, и второй), возвращенный в виде чисел или числовых векторов. Миллисекунды являются дробной частью секунд вывод. При преобразовании массива datetime t эти компоненты равны значениям Year, Month, Day, Hour, Minute и свойств Second. Например, Y = t.Year.

Ограничения

  • Когда вычислительные векторы даты, datevec устанавливает значения месяца от меньше чем 1 до 1. Дневные значения, D, меньше чем 1 установлен в прошлый день предыдущего месяца минус |D |. Однако, если 0 ≤ DateNumber <1, то datevec(DateNumber) возвращает вектор даты формы [0 0 0 H MN S], где H, MN и S являются часами, минутами и секундами, соответственно.

Советы

  • Векторизованный синтаксис вызова может предложить значительное повышение производительности для больших массивов.

Расширенные возможности

Представлено до R2006a