我們可以使用fbusdate
獲得個月的第一個工作日:如何在MATLAB中查找一週的第一個商業日期?
Date = fbusdate(Year, Month);
然而,我們怎麼一個周的第一個工作日?
舉例來說,在那段我張貼這一週,週一2017年9月7日是美國假日:
isbusday(736942) % = 0
如何確定的第一個工作日本週將是第二天736943
?
我們可以使用fbusdate
獲得個月的第一個工作日:如何在MATLAB中查找一週的第一個商業日期?
Date = fbusdate(Year, Month);
然而,我們怎麼一個周的第一個工作日?
舉例來說,在那段我張貼這一週,週一2017年9月7日是美國假日:
isbusday(736942) % = 0
如何確定的第一個工作日本週將是第二天736943
?
解決它。這是基於對@ m7913d的答案的函數:僅使用功能weekday
得到一週的第一個星期日,然後busdate
獲得下一個
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
我不知道返回一週的第一個工作日,一個內建的功能,但你可以在週日之後請求the next working day獲得它:
busdate(736941); % 736941 = Sunday 09/03/2017
好主意。已經寫了一個函數作爲答案。 – JohnAndrews
你所需fbusdateweek
功能,可以在同一行中完成之後的工作日:
dn = 736942; % Date number for any day in a week
Date = busdate(dn-weekday(dn)+1);
注:busdate
默認使用功能holidays
獲得對於T所有的節假日和特殊nontrading天他在紐約證券交易所。如果必要的話,你可以定義爲an alternate set of holidaysbusdate
使用如下:
holidayArray = ...; % Some set of date numbers, vectors, or datetimes
Date = busdate(dn-weekday(dn)+1, 1, holidayArray);
這樣你可以定義一組本地化的假期。
酷!我想知道它也更快嗎?轉換爲日期時間可能需要一些時間,我記得。 – JohnAndrews
@JohnAndrews:沒關係。日期時間甚至不需要。這是* waaay *更簡單。 :) – gnovice
......天才哈哈:) – JohnAndrews
週一始終是一個星期 – m7913d
不正確的第一個工作日。有時候這是一個假期(例如在州內)。本週的好例子09/04/2017是商務假期。 – JohnAndrews
如果你想要第二週,獲得第一週,然後添加7? –