主要内容

在文本和datetime持续时间

此示例演示如何在表示日期和时间的文本类型和数据类型之间进行转换。的datetime数据类型表示时间点,例如2020年8月24日上午10:50:30,而持续时间数据类型表示时间的长度,例如3小时、47分钟和16秒。将日期和时间转换为文本的一个常见原因是将它们附加到用作绘图标签或文件名的字符串中。类似地,如果文件具有以文本形式存储日期和时间的数据列,则可以将这些列中的数据读入datetime持续时间数组,使数据对分析更有用。

转换:

  • datetime持续时间值设置为文本时,使用字符串函数。(你也可以使用字符函数将这些值转换为字符向量。)

  • 文本datetime值,使用datetime函数。

  • 文本持续时间值,使用持续时间函数。

还有一些函数,例如readcellreadvars,readtable函数,从文件中读取文本并自动将表示日期和时间的文本转换为datetime持续时间数组。

转换datetime持续时间文本的值

创建一个datetime值,表示当前日期和时间。

D =日期时间(“现在”
d =datetime31日- 8月- 2022 03:28:25

转换d要发送短信,请使用字符串函数。

字符串(d)
str = "31-Aug-2022 03:28:25"

类似地,您可以转换持续时间值。例如,首先创建一个持续时间值,表示3小时30分钟。创建此值的一种方法是使用小时分钟功能。这些函数创建持续时间然后可以组合这些值。

D =小时(3)+分钟(30)
d =持续时间3.5人力资源

转换d文本。

字符串(d)
STR = "3.5小时"

这种字符串的一个常见用途是将它们添加到绘图标签或文件名中。例如,创建一个简单的图表,标题包括今天的日期。首先转换日期并将其添加到字符串中myTitle

D =日期时间(“今天”
d =datetime31日- 8月- 2022
myTitle =“绘图生成于:”+字符串(d)
myTitle = "Plot generated on: 31 aug -2022"

用你的标题创造情节。

1)图(兰德(10日)标题(myTitle)

图中包含一个轴对象。标题为Plot的axis对象生成于:aug - 31- 2022包含一个类型为line的对象。

将数组转换为字符串数组

的数组也可以转换datetime持续时间值。转换时使用字符串函数,则生成的字符串数组具有相同的大小。

例如,创建一个datetime数组中。

D = datetime(2021,1:3,15,12,0,0)'
D =3 x1 datetime2021年1月15日12:00:00 15年2月15日12:00:00

转换D到一个字符串数组。

字符串(D)
str =3 x1字符串“2021年1月15日12:00:00”“2021年2月15日12:00:00”“2021年3月15日12:00:00”

类似地,您可以创建一个持续时间数组并转换它。一种方法是创建持续时间数组是使用持续时间函数。使用指定小时、分钟和秒的数字输入调用它。

D = duration(1:3,30,0)'
D =3 x1持续时间01:30:00 02:30:00 03:30:00

转换持续时间数组中。

字符串(D)
str =3 x1字符串"01:30:00" "02:30:00" "03:30:00"

指定输出文本的格式

datetime持续时间数据类型具有指定显示格式的属性。活动脚本和命令窗口使用这种格式来显示值。当你转换时datetime持续时间数组,使用字符串函数时,可以指定不同的格式。

例如,创建一个datetime值并显示它。

D =日期时间(“现在”
d =datetime31日- 8月- 2022 03:28:26

使用字母标识符指定月、日、年和时间的全称格式。转换d到使用该格式表示日期和时间的字符串。

fmt ="dd MMMM yyyy, hh:mm:ss a";字符串(d,fmt)
str = " 8月31日2022,03:28:26 AM"

类似地,可以在转换类时指定格式持续时间数组中。首先创建一个持续时间价值。

D =小时(1)+分钟(30)+秒(45)
d =持续时间1.5125人力资源

转换d到使用标识符的字符串hh: mm: ss一小时,一分钟,一秒。

fmt =“hh: mm: ss”;字符串(d, fmt)
Ans = "01:30:45"

注意:字符串函数在转换其他数据类型时,不为格式提供第二个输入参数。

指定输出文本的区域设置

你也可以转换datetime持续时间使用不同区域设置的数组。区域设置为日期和月份提供了适当的名称。若要使用非默认区域设置,请将其作为另一个输入参数提供。

例如,指定fr_FR作为区域设置,以使用月份的法语名称表示当前日期和时间。

D =日期时间(“现在”
d =datetime31日- 8月- 2022 03:28:26
fmt ="dd MMMM yyyy, hh:mm:ss a";语言环境=“fr_FR”;STR = string(d,fmt,locale)
str = "31 août 2022, 03:28:26 AM"

类似地,您可以在转换时指定区域设置持续时间数组。法国地区使用不同的小时缩写。

D =小时(5)
d =持续时间5人力资源
fmt =“h”;语言环境=“fr_FR”;STR = string(d,fmt,locale)
STR = "5 h"

注意:字符串函数在转换其他数据类型时,不为区域设置提供第三个输入参数。

将文本转换为datetime

您可以将文本转换为datetime属性指定的日期和时间格式为datetime识别功能。

创建一个表示日期和时间的字符串。

str =“2021-09-15 09:12:34”
STR = "2021-09-15 09:12:34"

转换str到一个datetime价值。

D = datetime(str)
d =datetime15 - 9 - 2021 09:12:34

解释输入文本的格式

datetime函数识别许多常用的文本格式。但是,如果你的文本格式是datetime不识别,则可以将格式指定为输入参数。

例如,使用ISO 8601标准创建一个指定日期和时间的字符串。

str =“2021 - 09 - 15 - t091234”
str = "2021-09-15T091234"

datetime函数不识别此格式。将此字符串转换为datetime值,指定输入文本的格式。然后调用datetime函数。(当格式包含文字文本时,将其括在引号中。在本例中,指定文字文本T作为“T”.)

infmt =“yyyy-MM-dd 'HHmmss”;D = datetime(str,“InputFormat”infmt)
d =datetime15 - 9 - 2021 09:12:34

将文本转换为持续时间

您可以将文本转换为持续时间值,如果文本指定的时间格式为持续时间识别功能。

创建一个表示时间长度的字符串。

str =“00:34:01”
STR = "00:34:01"

转换str到一个持续时间价值。

D = duration(str)
d =持续时间00:34:01

解释输入文本的格式

持续时间函数识别指定以冒号分隔的日、时、分和秒的格式。这些格式是:

  • “弟弟:hh: mm: ss”

  • “hh: mm: ss”

  • “mm: ss”

  • “hh: mm”

  • 前三种格式中的任何一种,最多九种年代表示分数秒数字的字符,例如“hh: mm: ss。sss”

如果输入文本是模糊的,这意味着它可以被解释为匹配“mm: ss”“hh: mm”格式,将格式指定为输入参数。

例如,创建一个表示时间长度的字符串。

str =“34:01”
STR = "34:01"

若要将此字符串转换为34分1秒的持续时间,请指定格式。然后调用持续时间函数。

infmt =“mm: ss”;D = duration(str,“InputFormat”infmt)
d =持续时间00:34:01

从文件中阅读日期和时间

许多文件,如电子表格和文本文件,将日期和时间存储为文本。如果日期和时间是可识别的格式,则函数如readcellreadvars,readtable可以读取它们并自动将它们转换为datetime持续时间数组。

例如CSV文件outages.csv是一个使用MATLAB®发布的示例文件。该文件包含一组电力中断的数据。第一行outages.csv具有列名。文件的其余部分对于每次停机都有逗号分隔的数据值。该文件有1468行数据。这里显示了前几行。

地区,OutageTime、损失、客户、RestorationTime导致西南,2002-02-01 12:18,458.9772218,1820159.482,2002-02-07 16:50,冬季风暴东南部,2003-01-23 00:49,530.1399497,212035.3001,冬季风暴东南部,2003-02-07 21:15,289.4035493,142938.6282,2003-02-17 08:14,冬季风暴西方,2004-04-06 05:44,434.8053524,340371.0338,2004-04-06 06:10,设备故障中西部,2002-03-16 06:18,186.4367788,212754.055,2002-03-18 23:23,严重的风暴……

阅读前三列outages.csv并将它们直接存储在数组中,使用readvars函数。要将文本读入存储字符串数组的变量,请指定TextType名称-值参数。但是,该函数将CSV文件第二列中的值识别为日期和时间,并创建OutageTime变量为adatetime数组中。显示每个输出数组的前五行。

[Region,OutageTime,Loss] = readvars(“outages.csv”“TextType”“字符串”);谁地区OutageTime损失
名称大小字节类属性Loss 1468x1 11744 double OutageTime 1468x1 23520 datetime Region 1468x1 83256 string
损失(1:5)
ans =5×1458.9772 530.1399 289.4035 434.8054 186.4368
OutageTime (1:5)
ans =5 x1 datetime2002-02-01 12:18 2003-01-23
区域(1:5)
ans =5 x1字符串西南"东南"东南"西部"中西部"

要读取整个电子表格并将数据存储在表中,请使用readtable函数。要将文本读入存储字符串数组的表变量,请指定TextType名称-值参数。然而,readtable仍将OutageTimeRestorationTime表变量存储datetime数组。

T =可读的(“outages.csv”“TextType”“字符串”
T =1468×6表区域OutageTime Loss Customers RestorationTime Cause ___________ ________________ ________________ ________________ _________________ "SouthWest" 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 "winter storm" " southeastern " 2003-01-23 00:49 530.14 2.1204e+05 NaT "winter storm" " southeastern " 2003-02-07 21:15 289.4 1.4294e+05 2003-02-07 21:15 "winter storm" "West" 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 "equipment fault" "MidWest" 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23“猛烈风暴”“西部”2003-06-18 02:49 00 2003-06-18 10:54“攻击”“西部”2004-06-20 14:39 231.29 NaN 2004-06-20 19:16“设备故障”“西部”2002-06-06 19:28 311.86 NaN 2002-06-07 00:51“设备故障”“东北”2003-07-16 16:23 239.93 49434 2003-07-17 01:12“火灾”“中西部”2004-09-27 11:09 286.72 66104 2004-09-27 16:37“设备故障”“东南”2004-09-05 17:48 73.387 36073 2004-09-05 20:46“设备故障”“西部”2004-05-21 21:45 159.99 NaN 2004-05-22 04:23“设备故障”“东南”2002年09月01日18:22 95.917 36759 2002年09月01日19:12“强风暴”“东南”2003年09月27日07:32 NaN 3.5517e+05 2003年10月04日07:02“强风暴”“西”2003年11月12日06:12 254.09 9.2429e+05 2003年11月17日02:04“冬季风暴”“东北”2004年09月18日05:54 00 NaT“设备故障”\

就像这些表变量一样datetime数组,您可以使用它们执行方便的计算。例如,您可以计算断电的持续时间,并将它们作为持续时间数组中。

T.OutageDuration = T.RestorationTime - T.OutageTime
T =1468×7表区域OutageTime Loss Customers RestorationTime Cause OutageDuration ___________ ________________ ________________ ________________ _________________ ______________ "SouthWest" 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 "winter storm" 148:32:00 " southeastern " 2003-01-23 00:49 530.14 2.1204e+05 NaT "winter storm" NaN " southeastern " 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 "winter storm" 226:59:00 "West" 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 "equipment fault" 00:26:00“中西部”2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23“猛烈风暴”65:05:00“西部”2003-06-18 02:49 00 2003-06-18 10:54“攻击”08:05:00“西部”2004-06-20 14:39 231.29 NaN 2004-06-20 19:16“设备故障”04:37:00“西部”2002-06-06 19:28 311.86 NaN 2002-06-07 00:51“设备故障”05:23:00“东北”2003-07-16 16:23 239.93 49434 2003-07-17 01:12“火灾”08:49:00“中西部”2004-09-27 11:09 286.72 66104 2004-09-27 16:37“设备故障”05:28:00“东南”2004-09-05 17:4873.387 36073 2004-09-05 20:46“设备故障”02:58:00“西”2004-05-21 21:45 159.99 NaN 2004-05-22 04:23“设备故障”06:38:00“东南”2002-09-01 18:22 95.917 36759 2002-09-01 19:12“强风暴”00:50:00“东南”2003-09-27 07:32 NaN 3.5517e+05 2003-10-04 07:02“强风暴”167:30:00“西”2003-11-12 06:12 254.09 9.2429e+05 2003-11-17 02:04“冬季风暴”115:52:00“东北”2004-09-18 05:54 00 NaT“设备故障”NaN

另请参阅

||||||||||||

相关的话题

外部网站