if (input_date < firstDateOfTheYear(WKST, year))
{
return ((isLeapYear(year-1))?53:52);
}
else
{
return ((dayOfYear(input_date) - firstDateOfTheYear(WKST, year).day)/7 + 1);
}
firstDateOfTheYear 返回给定一周开始 (WKST) 和年份的第一个日历日期,例如,如果 WKST = 星期四,年份 = 2012,则返回 1 月 5 日。
dayOfYear 返回一年中的连续数字日期,例如 2 月 1 日 = 32
示例 #1: 2012 年 1月 18 日,每周的开始时间是星期一
- dayOfYear(2012 年 1 月 18 日)= 18
- firstDateOfTheYear(2012 年星期一)= 2012 年 1 月 2 日
(18 - 2)/7 + 1 = 3 答案周数。3
示例 #2: 2012 年 1 月 18 日,每周开始是星期四
- dayOfYear(2012 年 1 月 18 日)= 18
- firstDateOfTheYear(2012 年星期四)= 2012 年 1 月 5 日
(18 - 5)/7 + 1 = 2 答案周数。2
示例 #3: 2012 年 1 月 1 日,每周开始是星期一
- firstDateOfTheYear(2012 年星期一)= 2012 年 1 月 2 日
- IsLeapYear(2012-1) = 假
2012 年 1 月 1 日 < 2012 年 1 月 2 日 回答周数 52