【问题标题】:How to convert respectively four column to date formatting at MATLAB?如何在 MATLAB 中分别将四列转换为日期格式?
【发布时间】:2019-01-31 21:12:47
【问题描述】:

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

  • A栏:时间(单位年)
  • B栏:年份
  • C 列:一年中的哪一天
  • D 列:小时
  • E 栏:分钟
  • 和其他包括价值观

我想将从 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

【问题讨论】:

    标签: matlab date converter


    【解决方案1】:

    欢迎来到 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);
    

    【讨论】:

    • 日期格式描述为 t.Format 但输出格式类似于 'dd/mm/yyyy hh:mm:ss'。我不明白为什么它不像'dd/mm/yyyy HH:MM'?
    • 大写 M 是月份,小写字母 m 是分钟。 HH 是 24 小时,hh 是 12 小时。 nl.mathworks.com/help/matlab/ref/datetime.html#buhzxmk-1-Format
    • 我建议使用readtable 而不是xlsread,总体上会少很多麻烦。
    • 这是为什么呢?我做了一些挖掘。 \toolbox\shared\spreadsheet\+matlab\+io\+spreadsheet\+internalreadSpreadsheetFile.m\toolbox\matlab\iofun\private 有八个以xls 开头的文件,但其中一个是xlsreadXLSX.m 我很惊讶Matlab 中有这么多选项。
    • 好问题,据我所知readtable 是在 R2013b 中引入的,作为从电子表格读取数据的改进功能。我相信函数仍然在内部使用xlsread,但是它将它包装在一个一般来说不太容易出错的函数中。
    猜你喜欢
    • 2020-02-20
    • 2014-02-25
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    相关资源
    最近更新 更多