首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在MATLAB中将四列分别转换为日期格式?

如何在MATLAB中将四列分别转换为日期格式?
EN

Stack Overflow用户
提问于 2018-08-26 03:20:52
回答 1查看 124关注 0票数 1

Excel文件(104976x10)包含大量数据。

  • A列:时间(单位年)
  • B列: Year
  • C列:星期几
  • D列: Hour
  • E列:分钟
  • 以及其他值

我想将以B列开始直到E列的列转换为日期格式,如'dd/mm/yyyy HH:MM‘。

数据示例:

代码语言:javascript
复制
1998,41655251   1998    152   1   0   12,5  12,0    11,8    11,9    12,0

我想做日期而不是第2,3,4和5列。

代码语言:javascript
复制
1998,41655251   01/06/1998 01:00    12,5  12,0  11,8  11,9  12,0

代码语言:javascript
复制
1998,41655251   01/06/1998 01:00  1998  152   1   0   12,5  12,0    11,8    11,9    12,0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-26 04:14:57

欢迎来到SO。Matlab有两种类型的数据格式:

  1. datetime,在2014b.
  2. datenum,中引入很久以前(2006b之前),它基本上是一个双精度的值,给出了从0000年1月0日起的天数。

我认为最好的方法是使用datetime,并像这样给它提供年、月、日、小时和分钟的值:

t=datetime(1998,0,152,1,0,0)

t= '01-May-1998 01:00:00‘

正如你所看到的,日子会自动溢出到月份中。但我最终会在5月1日结束,而不是像你的例子中那样是6月1日。

要更改格式:

t.Format='dd/MM/yyyy hh:mm'

t= '01/05/1998 01:00‘

要将其转换为字符串,只需使用string(t)

这是一个结合以上函数读取xlsx文件并使用更新后的列写入新文件的示例。

代码语言:javascript
复制
data=xlsread('test.xlsx');
S = size(data);
t = datetime(data(:,2),0,data(:,3),data(:,4),data(:,5),0);
t.Format='dd/MM/yyyy HH:mm';
data2=num2cell(data(:,1));
data2(:,2)=cellstr(string(t));
data2(:,3:S(2)-3)=num2cell(data(:,6:end));
xlswrite('test2.xlsx',data2);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52020541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档