主要内容

在日期时间数组、数字和文本之间转换

概述

日期时间是表示时间点的最佳数据类型。日期时间值具有灵活的显示格式和高达纳秒的精度,并且可以考虑时区、夏令时和闰秒。但是,如果使用MATLAB编写的代码®R2014a或更早版本,或者如果您与使用此版本的其他人共享代码,则可能需要使用以下三种格式之一存储的日期和时间:

  • 日期字符串-一个字符向量。

    示例:2012年8月23日星期四上午9:45:44.946
  • 日期向量-一个1乘6的数字向量,包含年、月、日、小时、分钟和秒。

    示例:[2012 8 23 9 45 44.946]
  • 序列日期编号-一个单一的数字,等于从1月0日起,在国际标准化组织(ISO)的前公历(指定公历的使用)0000的天数。序列号作为一些不接受日期时间期间数据类型。

    示例:7.3510e+005

日期字符串、向量和数字可以存储为值数组。在字符向量的单元格数组中存储多个日期字符串,在M-by-6矩阵,以及矩阵中的多个序列日期编号。

您可以将这些格式中的任何一种转换为日期时间使用日期时间功能。如果现有的MATLAB代码需要一个序列日期号或日期向量,请使用日期日期向量函数分别转换日期时间数组设置为预期的数据格式。转换日期时间数组到字符向量,使用烧焦细胞功能。

从R2016b开始,您还可以将日期时间数组转换为字符串数组一串功能。

在日期时间和字符向量之间转换

日期字符串可以是由与特定日期和/或时间相关的字段组成的字符向量。有几种方法可以用文本格式表示日期和时间。例如,以下所有内容都是表示2010年8月23日下午04:35:42的字符向量:

“2010年8月23日下午04:35:06”“8月23日星期三”“2010年8月23日16:35”“8月23日16:35:42.946”

日期字符串包括分隔字段的字符,如此处使用的连字符、空格和冒号:

d级='2010年8月23日16:35:42'

将一个或多个日期字符串转换为日期时间使用日期时间功能。为了获得最佳性能,请将输入日期字符串的格式指定为日期时间.

注意

指定符日期时间用于描述日期和时间格式与日期字符串,日期向量,和日期函数接受。

有关日期和时间格式说明符的完整列表,请参见格式财产日期时间数据类型。

t=日期时间(d,'输入格式','dd-MMM-yyyy时:分:秒')
t=日期时间2010年8月23日16:35:42

虽然日期字符串,D,和日期时间标量,T,看起来很相似,他们不相等。查看每个变量的大小和数据类型。

DT
名称大小字节类属性d 1x20 40字符t 1x1 17日期时间

转换日期时间使用烧焦细胞. 例如,将当前日期和时间转换为时间戳以附加到文件名。

t=日期时间('现在','格式',“年-月-日”)
t=日期时间2017-01-03T151105
S=字符(t);文件名=['我的测试',秒]
文件名='myTest\u 2017-01-03T151105'

在Datetime和字符串数组之间转换

从R2016b开始,您可以使用一串函数创建字符串数组。如果字符串数组包含日期字符串,则可以将字符串数组转换为日期时间使用日期时间功能。类似地,您可以将日期时间数组转换为字符串数组一串功能。

转换字符串数组。MATLAB用双引号显示字符串。为了获得最佳性能,请将输入日期字符串的格式指定为日期时间.

结构=[“2016年10月24日11:58:17”;“2016年11月19日09:36:29”;“2016年12月12日10:09:06”})
str=3×1字符串数组“2016年10月24日11:58:17”“2016年11月19日09:36:29”“2016年12月12日10:09:06”
t=日期时间(str,'输入格式','dd-MMM-yyyy时:分:秒')
t=3×1日期时间阵列2016年10月24日11:58:17 2016年11月19日09:36:29 2016年12月12日10:09:06

转换日期时间值转换为字符串。

t=日期时间('2016年12月25日06:12:34'); str=字符串(t)
str=“2016年12月25日06:12:34”

在日期时间和日期向量之间转换

日期向量是一个1乘6的双精度数字向量。日期向量的元素是整数值,除了seconds元素可以是小数。时间值以24小时表示。没有AM或PM设置。

日期向量按以下顺序排列:

年月日时分秒

以下日期向量表示2012年10月24日上午10:45:07:

[2012 10 24 10 45 07]

将一个或多个日期向量转换为日期时间使用日期时间功能:

t=日期时间([2012 10 24 10 45 07])
t=日期时间2012年10月24日10:45:07

而不是使用日期向量要提取日期时间值的组件,请使用函数,例如,,和白天取而代之的是:

y=年(t)
y=2012年

或者,访问相应的属性,例如t、 年对于年份值:

y=t.年
y=2012年

将序列日期数字转换为日期时间

序列日期编号表示日历日期,表示自固定基准日期起经过的天数。在MATLAB中,序列号1是10000年1月1日。

序列时间可以表示从午夜开始的几天的分数;例如,下午6点等于连续的0.75天。所以字符向量'2003年10月31日下午6:00'MATLAB中的日期是731885.75。

将一个或多个序列号转换为日期时间使用日期时间功能。指定要转换的日期编号的类型:

t=日期时间(731885.75,'转换自','日期编号')
t=日期时间2003年10月31日18:00:00

将日期时间数组转换为数值

有些MATLAB函数接受数字数据类型,但不接受日期时间值作为输入。要将这些函数应用于日期和时间数据,请将日期时间值转换为有意义的数值。然后,调用函数。例如日志函数接受双重的输入,但不是日期时间输入。假设你有一个日期时间研究或实验过程中的一系列日期。

t=日期时间(2014,6,18)+日历月(1:4)
t=1×4日期时间阵列2014年7月18日2014年8月18日2014年9月18日2014年10月18日

减去原点值。例如,原始值可能是实验的开始日期。

dt=t-日期时间(2014,7,1)
dt=1×4时长阵列408:00:00 1152:00:00 1896:00:00 2616:00:00

日期是一个期间数组。转换日期双重的使用,,小时,分钟,或功能。

x=小时(dt)
x=408 1152 1896 2616

通过双重的数组作为日志功能。

y=对数(x)
y=6.0113 7.0493 7.5475 7.8694

另请参见

||||||

相关主题