datetime
является лучшим типом данных для представления моментов времени. значения datetime
имеют гибкие форматы отображения и до точности наносекунды и могут составлять часовые пояса, летнее время и секунды прыжка. Однако, если вы работаете с кодом, созданным в MATLAB® R2014a или ранее, или если вы совместно используете код с другими, которые используют такую версию, вы можете должны быть работать с датами и время, сохраненное в одном из этих трех форматов:
Строка даты — вектор символа.
Example: Thursday, August 23, 2012 9:45:44.946 AM
Вектор даты — 1 6 числовой вектор, содержащий год, месяц, день, час, минуту, и второй.
Example: [2012 8 23 9 45 44.946]
Последовательный Номер Даты — единственный номер равняется номеру дней с января 0, 0000 в преждевременном календаре ISO. Последовательные числа даты полезны как входные параметры для некоторых функций MATLAB, которые не принимают типы данных duration
или datetime
.
Example: 7.3510e+005
Строки даты, векторы и числа могут быть сохранены как массивы значений. Сохраните несколько строк даты в массиве ячеек из символьных векторов, несколько векторов даты в m
-by-6 матрица и несколько последовательных чисел даты в матрице.
Можно преобразовать любой из этих форматов к массиву datetime
с помощью функции datetime
. Если ваш существующий код MATLAB ожидает последовательный номер даты или вектор даты, используйте datenum
или функции datevec
, соответственно, чтобы преобразовать массив datetime
в ожидаемый формат данных. Чтобы преобразовать массив datetime
в векторы символов, используйте функции cellstr
или char
.
Начиная в R2016b, также можно преобразовать массив datetime
в массив строк с функцией string
.
Строка даты может быть вектором символа, состоявшим из полей, связанных с определенной датой и/или время. Существует несколько способов представлять даты и времена в текстовом формате. Например, все следующее является векторами символов, представляющими 23 августа 2010 в 16: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
.
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 = string({'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 вектор с двойной точностью чисел. Элементы вектора даты с целочисленным знаком, за исключением элемента секунд, который может быть дробным. Временные стоимости выражаются в 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.
Последовательное время может представлять части дней, начинающихся в полночь; например, 6 p. m. равняется 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