如何在MATLAB中找到一周的第一个工作日期?

时间:2017-09-07 15:52:25

标签: matlab datetime

我们可以使用fbusdate来获取月的第一个工作日

Date = fbusdate(Year, Month);

但是,我们如何获得周的第一个工作日

例如,在我发布这一周的那一周,2017年7月9日星期一在美国度假:

isbusday(736942) % = 0

如何确定本周的第一个工作日是第二天736943

3 个答案:

答案 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