我们可以使用fbusdate
来获取月的第一个工作日:
Date = fbusdate(Year, Month);
但是,我们如何获得周的第一个工作日?
例如,在我发布这一周的那一周,2017年7月9日星期一在美国度假:
isbusday(736942) % = 0
如何确定本周的第一个工作日是第二天736943
?
答案 0 :(得分:4)
我不知道返回一周第一个工作日的内置函数,但您可以在星期日之后通过请求the next working day来获取它:
busdate(736941); % 736941 = Sunday 09/03/2017
答案 1 :(得分:4)
您可以使用weekday
函数在一行中完成所需的fbusdateweek
功能,以获得本周的第一个星期日,然后busdate
获取下一个工作日:< / p>
dn = 736942; % Date number for any day in a week
Date = busdate(dn-weekday(dn)+1);
注意: busdate
默认使用函数holidays
来获取纽约证券交易所的所有假期和特殊非交易日。如有必要,您可以为busdate
定义an alternate set of holidays,使用方法如下:
holidayArray = ...; % Some set of date numbers, vectors, or datetimes
Date = busdate(dn-weekday(dn)+1, 1, holidayArray);
这样您就可以定义一组本地化的假期。
答案 2 :(得分: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