datetime
- лучший тип данных для представления точек во времени. datetime
значения имеют гибкие форматы отображения и до наносекундной точности, и могут учитывать часовые пояса, дневное сохранение время и високосные секунды. Однако, если вы работаете с кодом, созданным в MATLAB® R2014a или ранее, или если вы делитесь кодом с другими, кто использует такую версию, вам может потребоваться работать с датами и временем, хранящимися в одном из следующих трех форматов:
Date String - вектор символов.
Example: Thursday, August 23, 2012 9:45:44.946 AM
Вектор дат - числовой вектор 1 на 6, содержащий год, месяц, день, час, минуту и секунду.
Example: [2012 8 23 9 45 44.946]
Серийный номер даты - один номер, равный количеству дней с 0 января 0000 года в пролептическом календаре ISO (с указанием использования григорианского календаря). Серийные номера дат полезны в качестве входов для некоторых функций MATLAB, которые не принимают datetime
или duration
типы данных.
Example: 7.3510e+005
Строки дат, векторы и числа могут храниться как массивы значений. Сохраните несколько строк дат в массиве ячеек из векторов символов, несколько векторов дат в m
-by-6 матрица и несколько серийных номеров дат в матрице.
Можно преобразовать любой из этих форматов в datetime
массив с использованием datetime
функция. Если ваш существующий код MATLAB ожидает серийный номер даты или вектор даты, используйте datenum
или datevec
функций, соответственно, для преобразования datetime
массив в ожидаемый формат данных. Преобразование datetime
массив в векторы символов, используйте 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
Преобразуйте 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
Преобразуйте datetime
значение в строку.
t = datetime('25-Dec-2016 06:12:34');
str = string(t)
str = "25-Dec-2016 06:12:34"
Вектор даты является вектором 1 на 6 с двойной точностью. Элементы массива вектора даты являются целочисленными, за исключением элемента seconds, который может быть дробным. Значения времени выражаются в 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.8694
cellstr
| char
| datenum
| datetime
| datevec
| duration
| string