主要内容

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

概述

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

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

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

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

    例子:7.3510 e + 005

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

你可以把这些格式转换成datetime数组的使用datetime函数。如果您现有的MATLAB代码需要一个串行日期号或日期向量,则使用datenumdatevec函数,分别转换datetime数组的预期数据格式。将一个datetime数组的字符向量,使用字符cellstr功能。

从R2016b开始,你也可以转换adatetime的字符串数组字符串函数。

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

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

'23- August -2010 04:35:06 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- august -2010 16:35:42

尽管日期字符串,d,datetime标量,t虽然看起来相似,但它们并不相等。查看每个变量的大小和数据类型。

dt
Name Size Bytes Class Attributes d 1x20 40 char t 1x1 17 datetime

把一个datetime将数组转换为字符向量字符cellstr.例如,将当前日期和时间转换为要附加到文件名中的时间戳。

t = datetime (“现在”“格式”“yyyy-MM-dd“T”HHmmss”
日期:2017-01-03T151105
S = char (t);文件名= [“myTest_”,年代)
文件名= ' myTest_2017-01-03T151105 '

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

从R2016b开始,您可以使用字符串函数创建字符串数组。如果字符串数组包含日期字符串,则可以将字符串数组转换为datetime数组的datetime函数。类似地,你可以转换adatetime的字符串数组字符串函数。

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

str = [“24 - 10月2016 11:58:17”“19 - 11月- 2016 09:36:29”“12 - 12月- 2016 10:09:06”
str = 3×1 string array "24-Oct-2016 11:58:17" "19-Nov-2016 09:36:29" "12- december -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 - 12月- 2016 06:12:34”);字符串str = (t)
str = "25- december -2016 06:12:34"

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

日期向量是由双精度数字组成的1 × 6向量。日期向量的元素都是整数值的,除了秒元素,它可以是小数。时间值用24小时表示法表示。没有AM或PM设置。

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

年月日小时分秒

下面的日期向量表示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.Year
y = 2012

转换串行日期编号到日期时间

连续日期号表示日历日期,表示从固定的基本日期以来已经过的天数。在MATLAB中,序号1是1月1日0000。

连续时间可以表示从午夜开始的天数的小数;例如,下午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

将Datetime数组转换为数值

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

T = datetime(2014,6,18) + calmonths(1:4)
t = 1×4 datetime array 18- 7 -2014 18- 8- 2014 18- 9 -2014 18- 10 -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 = x)
Y = 6.0113 7.0493 7.5475 7.8694

另请参阅

||||||

相关的话题