datetime - наилучший тип данных для представления точек времени. datetime значения имеют гибкие форматы отображения и до наносекундной точности, а также могут учитывать часовые пояса, переход на летнее и високосное время. Однако при работе с кодом, созданным в MATLAB ® R2014a или более ранней версии, или при совместном использовании кода с другими пользователями, использующими такую версию, может потребоваться работа с датами и временем, хранящимися в одном из трех форматов:
Строка даты - символьный вектор.
Example: Thursday, August 23, 2012 9:45:44.946 AM
Вектор даты - числовой вектор 1 на 6, содержащий год, месяц, день, час, минуту и секунду.
Example: [2012 8 23 9 45 44.946]
Порядковый номер даты (Serial Date Number) - одиночное число, равное количеству дней с января 0, 0000 года в пролептическом календаре ISO (указывающем использование григорианского календаря). Серийные номера дат полезны в качестве входных данных для некоторых функций MATLAB, которые не принимают datetime или duration типы данных.
Example: 7.3510e+005
Строки даты, векторы и числа могут храниться как массивы значений. Хранить несколько строк даты в массиве ячеек из векторов символов, несколько векторов даты в m-на-6 матриц и несколько серийных номеров дат в матрице.
Можно преобразовать любой из этих форматов в datetime с использованием массива datetime функция. Если существующий код MATLAB ожидает серийный номер даты или вектор даты, используйте datenum или datevec функции, соответственно, для преобразования datetime массив с ожидаемым форматом данных. Преобразование datetime array to символьные векторы, используйте char или cellstr функции.
Начиная с R2016b, можно также преобразовать datetime в строковый массив со значением string функция.
Строка даты может быть символьным вектором, состоящим из полей, относящихся к определенной дате и/или времени. Существует несколько способов представления дат и времени в текстовом формате. Например, все из следующего являются векторами символов, представляющими 23 августа 2010 года в 04:35:42:
'23-Aug-2010 04:35:06 PM' 'Wednesday, August 23' '08/23/10 16:35' 'Aug 23 16:35:42.946'
Строка даты содержит символы, разделяющие поля, например дефис, пробел и двоеточие:
d = '23-Aug-2010 16:35:42' Преобразовать одну или несколько строк даты в datetime с использованием массива datetime функция. Для достижения оптимальной производительности укажите формат входных строк даты в качестве входных данных для datetime.
Примечание
Спецификаторы, которые datetime используется для описания форматов даты и времени, отличающихся от спецификаторов, datestr, datevec, и datenum функции принимают.
Полный список спецификаторов формата даты и времени см. в разделе Format имущества datetime тип данных.
t = datetime(d,'InputFormat','dd-MMM-yyyy HH:mm:ss')
t = datetime 23-Aug-2010 16:35:42
Хотя строка даты, d, и datetime скаляр, t, похожи, они не равны. Просмотр размера и типа данных каждой переменной.
whos d t
Name Size Bytes Class Attributes d 1x20 40 char t 1x1 17 datetime
Преобразовать a datetime массив в символьный вектор с использованием char или cellstr. Например, преобразуйте текущую дату и время в метку времени для добавления к имени файла.
t = datetime('now','Format','yyyy-MM-dd''T''HHmmss')
t = datetime 2017-01-03T151105
S = char(t);
filename = ['myTest_',S]filename =
'myTest_2017-01-03T151105'
Начиная с R2016b, вы можете использовать string для создания строкового массива. Если строковый массив содержит строки даты, то можно преобразовать строковый массив в datetime массив с datetime функция. Аналогично, можно преобразовать datetime в строковый массив со значением string функция.
Преобразование массива строк. MATLAB отображает строки в двойных кавычках. Для достижения оптимальной производительности укажите формат входных строк даты в качестве входных данных для datetime.
str = ["24-Oct-2016 11:58:17"; "19-Nov-2016 09:36:29"; "12-Dec-2016 10:09:06"})
str =
3×1 string array
"24-Oct-2016 11:58:17"
"19-Nov-2016 09:36:29"
"12-Dec-2016 10:09:06"t = datetime(str,'InputFormat','dd-MMM-yyyy HH:mm:ss')
t = 3×1 datetime array 24-Oct-2016 11:58:17 19-Nov-2016 09:36:29 12-Dec-2016 10:09:06
Преобразовать a datetime значение для строки.
t = datetime('25-Dec-2016 06:12:34');
str = string(t)str =
"25-Dec-2016 06:12:34"Вектор даты - это вектор числа с двойной точностью 1 на 6. Элементы вектора даты являются целочисленными, за исключением секундного элемента, который может быть дробным. Значения времени выражаются в 24-часовом представлении. Параметры AM или PM отсутствуют.
Вектор даты расположен в следующем порядке:
year month day hour minute second
Следующий вектор дат представляет 10:45:07 24 октября 2012 года:
[2012 10 24 10 45 07]
Преобразование одного или нескольких векторов даты в datetime с использованием массива datetime функция:
t = datetime([2012 10 24 10 45 07])
t = datetime 24-Oct-2012 10:45:07
Вместо использования datevec для извлечения компонентов значений datetime используйте такие функции, как year, month, и day вместо этого:
y = year(t)
y =
2012Также можно получить доступ к соответствующему свойству, такому как t.Year для значений года:
y = t.Year
y =
2012Порядковый номер даты представляет календарную дату как число дней, прошедших с фиксированной базовой даты. В MATLAB порядковый номер 1 - январь 1, 0000.
Серийное время может представлять доли дней, начинающихся в полночь; например, 18:00 - 0,75 серийных дней. Итак, вектор символов '31-Oct-2003, 6:00 PM' в MATLAB указана дата 731885.75.
Преобразование одного или нескольких номеров серийных дат в datetime с использованием массива datetime функция. Укажите тип преобразуемого номера даты:
t = datetime(731885.75,'ConvertFrom','datenum')
t = datetime 31-Oct-2003 18:00:00
Некоторые функции MATLAB принимают числовые типы данных, но не значения datetime в качестве входных данных. Чтобы применить эти функции к данным даты и времени, преобразуйте значения datetime в значимые числовые значения. Затем вызовите функцию. Например, log функция принимает double входные данные, но не datetime входные данные. Предположим, что у вас есть datetime массив дат, охватывающих курс исследовательского исследования или эксперимента.
t = datetime(2014,6,18) + calmonths(1:4)
t = 1×4 datetime array 18-Jul-2014 18-Aug-2014 18-Sep-2014 18-Oct-2014
Вычитание исходного значения. Например, исходным значением может быть начальный день эксперимента.
dt = t - datetime(2014,7,1)
dt =
1×4 duration array
408:00:00 1152:00:00 1896:00:00 2616:00:00
dt является duration массив. Новообращенный dt в double массив значений в единицах лет, дней, часов, минут или секунд с использованием years, days, hours, minutes, или seconds функция, соответственно.
x = hours(dt)
x =
408 1152 1896 2616Пройти double массив в качестве входных данных для log функция.
y = log(x)
y =
6.0113 7.0493 7.5475 7.8694cellstr | char | datenum | datetime | datevec | duration | string