2017-09-07 8 views
5

我々はの最初の営業日を取得するためにfbusdateを使用することができます。MATLABで週の最初の営業日を見つける方法は?

Date = fbusdate(Year, Month); 

はしかし、どのように我々はの最初の営業日を得るのですか?

例として

、私はこれを掲示しています週の間に、月曜日2017年9月7日には、米国での休日だった:私は決定するにはどうすればよい

isbusday(736942) % = 0 

、この週の最初の営業日次の日になります736943

+0

月曜日は常に週の最初の営業日です – m7913d

+1

が間違っています。時折、それは休日です(例:州)。今週の良い例の09/04/2017は休業日でした。 – JohnAndrews

+0

2週間目が必要な場合は、最初の週を取得して7を追加しますか? –

答えて

1

はそれを解決しました。ここでは、@のm7913dの回答に基づいている機能は次のとおりです。

function Busday = fbusdateweek(date) 
% Return the first business day after Sunday 
% 'date' is a datenum input 

dperiod = date-6:date; 
sundays = weekday(dperiod)==1; 

sunday = find(sundays==1,1,'first'); 
datesunday = dperiod(sunday); 

% --> 
Busday = busdate(datesunday); 

end 
4

私は週の最初の営業日を返す組み込み関数を認識してないんだけど、あなたは日曜日の後the next working dayを要求することによってそれを得ることができます。

busdate(736941); % 736941 = Sunday 09/03/2017 
+0

良いアイデア。答えとして関数を書いた。 – JohnAndrews

4

ご希望fbusdateweek関数は次を得るためにbusdateその後、週の最初の日曜日を得るためだけの機能weekdayを使用して1行で行うことができますその後営業日:

dn = 736942; % Date number for any day in a week 
Date = busdate(dn-weekday(dn)+1); 


注:busdateはトンのためのすべての休日や特別な非トレーディング日数を取得するには、デフォルトで機能holidaysを使用しています彼はニューヨーク証券取引所。

holidayArray = ...; % Some set of date numbers, vectors, or datetimes 
Date = busdate(dn-weekday(dn)+1, 1, holidayArray); 

を使用すると、ローカライズされた休日のセットを定義することができますこの方法は:必要な場合は、次のように使用するbusdateためan alternate set of holidaysを定義することができます。

+0

クール!それも速いですか?日時への変換は私が覚えている時間がかかることがあります。 – JohnAndrews

+0

@JohnAndrews:決して気にしないでください。 datetimeは必要でもありませんでした。それは* waaay *シンプルだった。 :) – gnovice

+0

... Genius haha​​ :) – JohnAndrews

関連する問題