转换日期时间数组,数字和文本之间
概述
datetime
是表示时间点的最佳数据类型。datetime
值具有灵活的显示格式和高达纳秒的精度,并且可以考虑时区、夏令时和闰秒。但是,如果您使用MATLAB编写的代码®R2014a或更早版本,或者如果您与使用此类版本的其他人共享代码,您可能需要使用以下三种格式之一存储的日期和时间:
日期字符串、向量和数字可以存储为值数组。将多个日期字符串存储在字符向量的单元格数组中,多个日期向量存储在一个米
- × 6矩阵,以及一个矩阵中的多个串行日期数。
可以将这些格式中的任何一种转换为datetime
数组。datetime
函数。如果您现有的MATLAB代码需要一个串行日期数或日期向量,请使用datenum
或datevec
函数,分别用于转换datetime
数组转换为预期的数据格式。转换成datetime
数组转换为字符向量,使用字符
或cellstr
功能。
从R2016b开始,您还可以转换adatetime
数组转换为字符串数组字符串
函数。
转换日期时间和字符向量之间
日期字符串可以是由与特定日期和/或时间相关的字段组成的字符向量。有几种方法可以用文本格式表示日期和时间。例如,下面所有的字符向量表示August 23, 2010 at 04:35:42 PM:
'星期三,8月23日' '08/23/10 16:35' ' 8月23日16:35:42.946'
日期字符串包括分隔字段的字符,例如这里使用的连字符、空格和冒号:
d =“23 - 8月- 2010 16:35:42”
将一个或多个日期字符串转换为datetime
数组。datetime
函数。为获得最佳性能,请将输入日期字符串的格式指定为datetime
.
请注意
说明符datetime
用于描述日期和时间格式不同于指定符datestr
,datevec
,datenum
函数接受。
有关日期和时间格式说明符的完整列表,请参阅格式
的性质datetime
数据类型。
T = datetime(d,“InputFormat”,“dd-MMM-yyyy HH: mm: ss”)
t = datetime 23-Aug-2010 16:35:42
尽管日期字符串,d
,和datetime
标量,t
虽然看起来相似,但它们并不相等。查看每个变量的大小和数据类型。
谁dt
名称大小字节类属性d 1x20 40 char t 1x1 17 datetime
把一个datetime
数组转换为字符向量字符
或cellstr
.例如,将当前日期和时间转换为附加到文件名的时间戳。
T = datetime(“现在”,“格式”,“yyyy-MM-dd“T”HHmmss”)
t =日期时间2017-01-03T151105
S = char(t);文件名= [“myTest_”,年代)
filename = 'myTest_2017-01-03T151105'
在日期时间和字符串数组之间进行转换
从R2016b开始,您可以使用字符串
函数用于创建字符串数组。如果字符串数组包含日期字符串,则可以将字符串数组转换为日期字符串datetime
数组中datetime
函数。类似地,您可以转换adatetime
数组转换为字符串数组字符串
函数。
转换字符串数组。MATLAB用双引号显示字符串。为获得最佳性能,请将输入日期字符串的格式指定为datetime
.
STR = string({“24 - 10月2016 11:58:17”;“19 - 11月- 2016 09:36:29”;“12 - 12月- 2016 10:09:06”})
str = 3×1字符串数组"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 2016年10月24日11:58:17 2016年11月19日09:36:29 2016年12月10日10:09:06
把一个datetime
值为字符串。
T = datetime(“25 - 12月- 2016 06:12:34”);STR = string(t)
str = "25-Dec-2016 06:12:34"
转换之间的日期时间和日期向量
日期向量是一个1 × 6的双精度数字向量。日期向量的元素是整数值,除了seconds元素,它可以是小数。时间值以24小时制表示。没有上午或下午设置。
日期向量按以下顺序排列:
年月日时分秒
以下日期向量表示2012年10月24日上午10:45:07:
[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值的组件,请使用诸如一年
,月
,一天
而不是:
Y =年份(t)
Y = 2012
或者,访问相应的属性,例如t.Year
对于年份值:
y = t
Y = 2012
转换序列号日期数字到日期时间
序列日期号将日历日期表示为自固定基准日期以来所经过的天数。在MATLAB中,序列号1是1月1万。
串行时间可以表示从午夜开始的天数;例如,下午6点等于0.75个连续天。那么字符向量“2003年10月31日,下午6时”
在MATLAB中的日期为731885.75。
将一个或多个序列号日期转换为datetime
数组。datetime
函数。指定要转换的日期数字类型:
T = datetime(731885.75;“ConvertFrom”,“datenum”)
t = datetime 31-Oct-2003 18:00:00
将日期时间数组转换为数值
一些MATLAB函数接受数字数据类型,但不接受日期时间值作为输入。若要将这些函数应用于日期和时间数据,请将日期时间值转换为有意义的数值。然后,调用函数。例如,日志
函数接受双
输入,但不是datetime
输入。假设有adatetime
一组跨越研究、研究或实验过程的日期。
T = datetime(2014,6,18) + calmonths(1:4)
t = 1×4 datetime array 18- july -2014 18- august -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
是一个持续时间
数组中。转换dt
到一个双
以年、日、小时、分钟或秒为单位的值数组年
,天
,小时
,分钟
,或秒
函数,分别。
X =小时(dt)
X = 408 1152 1896 2616
通过双
的输入日志
函数。
Y = log(x)
Y = 6.0113 7.0493 7.5475 7.8694
另请参阅
cellstr
|字符
|datenum
|datetime
|datevec
|持续时间
|字符串