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

How to convert respectively four column to date formatting at MATLAB?

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

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

数据示例:

1998,41655251   1998    152   1   0   12,5  12,0    11,8    11,9    12,0

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

1998,41655251   01/06/1998 01:00    12,5  12,0  11,8  11,9  12,0

1998,41655251   01/06/1998 01:00  1998  152   1   0   12,5  12,0    11,8    11,9    12,0

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

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

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

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 文件并使用更新的列写入新文件的示例。

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);