如何在 MATLAB 中解析长度不规则的日期字符串单元格数组



我有一个单元格数组的日期作为字符串(格式:"mm/dd/yyyy"),其中字符串长度因单元格条目而异,从 8 到 10,具体取决于日期(例如,n = 8 表示"1/1/2015",n = 10 表示"10/10/2015")。我想将每个单元格数组条目转换为其相应的双精度作为日期数数量。我试过:

id = find(~cellfun( @isempty, regexp( dateList, '/', 'tokenExtents' ) ) );

id = find(~cellfun( @isempty, strfind( dateList, '/' ) ) );

但这是不对的。提供了单元格数组的片段:

dateList = {'9/9/2016';
            '9/10/2016';
            '10/10/2016';
            '10/11/2016'};

你只需要使用datenum,因为它将接受一个字符串的单元格数组:

dateList = {'9/9/2016'; '9/10/2016'; '10/10/2016'; '10/11/2016'};
id = datenum(dateList);

并确认它有效:

>> datestr(id)
ans =
09-Sep-2016
10-Sep-2016
10-Oct-2016
11-Oct-2016

1)将每个单元格提取为3个不同的块,并带有strsplit:日,月和年

2)

使用pad使每个块的长度相同(2表示日和月,4为年)

3) 将字符串与 [D,'/',M,'/',Y] 连接在一起,您就可以毫无问题地运行 datenum。

编辑 1:我认为另一个答案要容易得多,我不知道 datenum 可以接受带有略有不同的有孔的字符串。

最新更新