如何找到下一个工作日:MATLAB [英] How do I find the next business day: MATLAB
本文介绍了如何找到下一个工作日:MATLAB的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
鉴于该日期= 20170203(yyyymmdd),如何找到下一个工作日,即20170206在这种情况下?
解决方案
pre> date = datenum('20170203','yyyymmdd');
NBD = nextBusinessDay(date)
NBD =
06-Feb-2017
或
date = datenum('20170203','yyyymmdd');
NBD = nextBusinessDay(日期,1:5)%星期日到星期四,如例如。以色列。
NBD =
05-Feb-2017
甚至
date = datenum('20170203','yyyymmdd');
NBD = nextBusinessDay(date,[3 5 6])%随机工作日
NBD =
07-Feb-2017
nextBusinessDay的功能在哪里:
function nbd = nextBusinessDay(serTime,workdays)
w = weekday(serTime);
如果存在('workdays','var')
nwds = workdays(workdays> w);
如果isempty(nwds)
nbd = datestr(floor(serTime + mod(7,w)+ workdays(1)));
else
nbd = datestr(floor(serTime)+ nwds(1) - w);
end
else
如果w < 6
nbd = datestr(floor(serTime + 1));
else
nbd = datestr(floor(serTime + 3 - mod(w,6)));
end
end
Given that date = 20170203 (yyyymmdd), how can I find the next business day, i.e. 20170206 in this case?
解决方案
date = datenum('20170203','yyyymmdd');
NBD = nextBusinessDay(date)
NBD =
06-Feb-2017
or
date = datenum('20170203','yyyymmdd');
NBD = nextBusinessDay(date,1:5) % Sunday to Thursday, as in e.g. Israel.
NBD =
05-Feb-2017
or even
date = datenum('20170203','yyyymmdd');
NBD = nextBusinessDay(date,[3 5 6]) % random business days
NBD =
07-Feb-2017
Where the function nextBusinessDay is:
function nbd = nextBusinessDay(serTime,workdays)
w = weekday(serTime);
if exist('workdays','var')
nwds = workdays(workdays > w);
if isempty(nwds)
nbd = datestr(floor(serTime + mod(7,w) + workdays(1)));
else
nbd = datestr(floor(serTime) + nwds(1) - w);
end
else
if w < 6
nbd = datestr(floor(serTime+1));
else
nbd = datestr(floor(serTime + 3 - mod(w,6)));
end
end
这篇关于如何找到下一个工作日:MATLAB的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文