如何找到下一个工作日:MATLAB [英] How do I find the next business day: MATLAB

查看:983
本文介绍了如何找到下一个工作日: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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆