文档

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

概述

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

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

    例如:Thursday, August 23, 2012 9:45:44.946 AM
  • 日期向量—1 × 6的数字矢量,包含年、月、日、时、分、秒。

    示例:[2012 8 23 9 45 44.946]
  • 序列号-一个数字,等于从预言ISO历法(指定使用公历)1月0日到000日的天数。对于一些不接受串行日期的MATLAB函数,串行日期数字作为输入是有用的datetime持续时间数据类型。

    例子:7.3510 e + 005

日期字符串、向量和数字可以存储为值数组。将多个日期字符串存储在字符向量的单元格数组中,多个日期向量存储在一个- × 6矩阵,以及一个矩阵中的多个串行日期数。

可以将这些格式中的任何一种转换为datetime数组。datetime函数。如果您现有的MATLAB代码需要一个串行日期数或日期向量,请使用datenumdatevec函数,分别用于转换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用于描述日期和时间格式不同于指定符datestrdatevec,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

另请参阅

||||||

相关的话题