exponenta event banner

datevec

Преобразование даты и времени в вектор компонентов

Описание

пример

Примечание

Хотя можно представлять даты и время в виде векторов дат, рекомендуется использовать datetime значения для представления точек времени и duration или calendarDuration значения для представления прошедшего времени.

DateVector = datevec(t) преобразует datetime или duration стоимость t к вектору даты - то есть числовому вектору, шесть элементов которого представляют год, месяц, день, час, минуту и вторые компоненты t.

Если t является datetime или duration массив, имеющий m элементы, затем datevec возвращает m-на-6 матрица, где каждая строка соответствует значению в t.

  • Если t является datetime массив, то его значения представляют моменты времени. Каждая строка DateVector представляет определенную дату и время.

  • Если t является duration массив, то его значения представляют истекшее время. Каждая строка DateVector представляет собой продолжительность времени, измеренную в единицах времени фиксированной длины. По этой причине значения во втором столбце DateVector (представляющее количество месяцев) всегда нули. Дополнительные сведения см. в разделе Ограничения.

пример

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
   23-Mar-2021 16:57:22
   24-Mar-2021 00:00:00

DateVector = datevec(t)
DateVector = 2×6

         2021            3           23           16           57       22.332
         2021            3           24            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.0210    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 или duration значения.

Типы данных: 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 рассмотрим двухсимвольные годы (например, '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-летнего диапазона дат, в котором находится двухсимвольный год, указанный как целое число. Используйте сводный год для интерпретации дат, указывающих год как два символа.

Если 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.

Ограничения

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

  • Если первым входным аргументом является duration массив, затем вывод datevec представляет не моменты времени, а, скорее, отрезки времени, измеренные в единицах времени фиксированной длины. Каждая строка выходной матрицы представляет длительность как количество лет, месяцев, дней, часов, минут и секунд, сумма которых представляет собой общую продолжительность времени, представляемую соответствующим элементом ввода. duration массив.

    Однако месяц не может быть единицей времени фиксированной длины, поскольку разные месяцы имеют разное количество дней. Поэтому количество месяцев всегда равно нулю. Вместо этого datevec представляет продолжительность как количество лет (каждая длиной 365,2425 дней), количество дней (каждая длиной 86 400 секунд) и количество часов, минут и секунд, сумма которых равна этой продолжительности. В результате количество дней может быть больше 31.

Совет

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

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