2017-02-06 7 views
1

日付= 20170203(yyyymmdd)の場合、翌営業日、この場合は20170206をどのように見つけることができますか?翌営業日の検索方法:MATLAB

+1

は 'day'、' datenum'と '関数datestrの組み合わせを使用します'。 –

+3

照会を投稿する前に - http://stackoverflow.com/help/how-to-ask – Prasad

答えて

4
date = datenum('20170203','yyyymmdd'); 
NBD = nextBusinessDay(date) 

    NBD = 

    06-Feb-2017 

または

機能がnextBusinessDayがある
date = datenum('20170203','yyyymmdd'); 
NBD = nextBusinessDay(date,1:5) % Sunday to Thursday, as in e.g. Israel. 

    NBD = 

    05-Feb-2017 

あるいは

date = datenum('20170203','yyyymmdd'); 
NBD = nextBusinessDay(date,[3 5 6]) % random business days 

NBD = 

07-Feb-2017 

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 
+3

@ Adriaan、より一般的な解決策を鼓舞してくれてありがとう!このソリューションでは、「仕事日」を指定できる 'workdays'という引数を使用できるようになりました(編集の例を参照)。 – JCKaz

関連する問題