以某种方式我的原始数据的时间戳是
A=
{'12/5/2015 11:59:58 PM';
'13/5/2015'; % ideally this is '13/5/2015 12:00 AM'
'13/5/2015 12:00:01 AM;
'13/5/2015 12:00:01 AM}
由于混合,我无法执行datenum,
datenum(A,'dd/mm/yyyy HH:MM:SS PM')
给了我"将日期字符串转换为日期编号失败"
如何转换A(混合 timeFormat)中的所有实体,转换为时间编号系列?
为了找到使用特定格式的索引,您可以使用正则表达式。
以较长的格式并将其匹配到您的A
:
longformat = '^dd/(1?)d/dddd dd:dd:dd [AP]M$';
found = regexp(A,longformat)
ans =
[1]
[]
[1]
[1]
因此,您可以使用匿名函数之类的东西找到找到哪些答案:
foundlong = @(A,expr) cellfun(@(x) ~isempty(x),regexp(A,expr));
found = foundlong(A,longformat)
found =
1
0
1
1
现在您有了可以在其中使用datenum()
与特定格式使用的索引。例如:
d(found) = datenum(A{found},'dd/mm/yyyy HH:MM:SS AM');
注意:如果从较短的表达式开始,则说
shortformat = '^dd/(1?)d/dddd';
您将匹配它们的所有。因此,请确保在序列$
的末尾添加,以匹配字符串的末端:
shortformat = '^dd/(1?)d/dddd$';