在Matlab中自动化任何一年的假日日期



下面的代码给出了一个特定年份的十进制日期。

HolidayArrayDate(2) = datenum(2012,01,16,00,00,00); %MartinLutherKingJrBirthday

我试图使假期更一般的输入"datayyear",而不是将其指定为"2012"。马丁·路德·金的生日是每年的第三个星期一。当我通过datyear输入任意年份2010/2011/2012/2013/2014时,它会自动为我选择1月的第三个星期一。怎么点乘呢?

谢谢!

从一年的第一天开始,21天总能找到第三个星期一。因此:获取一年的第一天的序列号(带datenum);获得一周中的一天以及接下来的20天(datestr(..., 'd'));找出前三个星期一(find(...=='M', 3);最后选择第三个并将其转换为日期字符串(datestr):

dataYear = 2012; %// input
f = datenum(dataYear,1,1); %// 1st day of year, in serial date number format
r = find(datestr(f+(0:20), 'd')=='M', 3); %// find three Mondays from that day on
result = datestr(f+r(3)-1); %// third Monday, in date string format

最新更新