有没有直接的方法呢?我想给出一个日期数组作为输入(例如1997-01-02 1997-01-03 ...使用格式yyyy-mm-dd)并且如果给定数组的所有元素都是一致的则得到1并且否则为0。
有什么想法吗?
答案 0 :(得分:1)
使用regexp执行此操作的方法很多。几个简单的:
str = '1917-01-23';
regexp(str,'\d\d\d\d-\d\d-\d\d')
ans =
1
如果字符串与该模式完全匹配,则会得到1,否则为空。
或者这样做:
regexp(str,'-','split')
ans =
'1917' '01' '23'
现在您可以验证第一件作品是有效年份,第二件作品是有效月份等等。
答案 1 :(得分:1)
这是一个想法:
d = {
'1997-01-02'
'1997-01-03'
'1111-99-99'
'not a date'
}
isDateValid = false(size(d));
for i=1:numel(d)
try
str = datestr(datenum(d{i},'yyyy-mm-dd'),'yyyy-mm-dd');
isDateValid(i) = isequal(str,d{i});
catch ME
end
end
结果:
>> isDateValid
isDateValid =
1
1
0
0
我来回转换的原因是MATLAB将超出正常范围的字段的值传递到下一个 - 第三个示例实际上将被解析为:1119-06-07
。而最后一个将抛出异常