transforming two date vectors
1 次查看(过去 30 天)
显示 更早的评论
Dear all,
I have
A={
'2/11/2008'
'30/11/08'
'28/12/08'
'25/01/09'
'22/02/09'
'22/03/09'
'19/04/09'
'17/05/09'
'14/06/09'
'12/7/2009'
'9/8/2009'
'6/9/2009'
'4/10/2009'
'1/11/2009'
'29/11/09'
'27/12/09'
'31/01/10'
'28/02/10'
'28/03/10'
'25/04/10'
'23/05/10'
'20/06/10'
'18/07/10'
'15/08/10'
'12/9/2010'}
and
B={
'1/4/2009'
'2/1/2009'
'3/1/2009'
'4/5/2009'
'5/3/2009'
'5/31/2009'
'7/5/2009'
'8/2/2009'
'8/30/2009'
'10/4/2009'
'11/1/2009'
'11/29/2009'
'1/3/2010'
'1/31/2010'
'2/28/2010'
'4/4/2010'
'5/2/2010'
'5/30/2010'
'7/4/2010'
'8/1/2010'
'8/29/2010'
'10/3/2010'
'10/31/2010'
'11/28/2010'
'1/2/2011'
'1/30/2011'
'2/27/2011'
'4/3/2011'
'5/1/2011'
'5/29/2011'
'7/3/2011'
'7/31/2011'
'8/28/2011'
'10/2/2011'
'10/30/2011'
'11/27/2011'
'1/4/2009'
'2/1/2009'}
Sometimes I have either vector A or vector B. I want to find a unified code that will convert these vectors to the format dd/mm/yy irrespective of whether I have A or B
thanks
3 个评论
Matt Fig
2012-8-7
So you can guarantee that every set of dates will have at least one day D where D>12? You did not specify that in the original statement, but it is good to know!
采纳的回答
Andrei Bobrov
2012-8-7
a = regexp(DateInput,'(^\d*)(?=/)','match');
if any(str2double(cat(1,a{:}))>12)
dfmt = 'dd/mm/yyyy';
else
dfmt = 'mm/dd/yyyy';
end
0 个评论
更多回答(1 个)
per isakson
2012-8-6
编辑:per isakson
2012-8-6
Try
cac = cellfun( @(str) transpose( sscanf( str, '%d/%d/%*d' ) ) ...
, A, 'uni', false );
num = cell2mat( cac );
isd = any( num >= 13, 1 );
if all( not( isd ) )
msg = 'Cannot decide';
elseif all( isd )
msg = 'Illegal date';
elseif isd(1)
msg = 'day first';
elseif isd(2)
msg = 'month first';
else
msg = 'Error in code';
end
1 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Time Series Objects 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!