有没有直接的方法可以做到这一点?我想给出一个日期数组作为输入(例如 1997-01-02 1997-01-03... 使用格式 yyyy-mm-dd),如果给定数组的所有元素都一致并且得到 1否则为 0。
任何的想法?
有没有直接的方法可以做到这一点?我想给出一个日期数组作为输入(例如 1997-01-02 1997-01-03... 使用格式 yyyy-mm-dd),如果给定数组的所有元素都一致并且得到 1否则为 0。
任何的想法?
使用正则表达式的许多方法。几个简单的:
str = '1917-01-23';
regexp(str,'\d\d\d\d-\d\d-\d\d')
ans =
1
如果字符串与该模式完全匹配,您将得到 1,否则为空。
或者这样做:
regexp(str,'-','split')
ans =
'1917' '01' '23'
现在您可以验证第一块是有效的年份,第二块是有效的月份,等等。
这是一个想法:
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
. 虽然最后一个会抛出异常