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, то возвращается 5 января.
dayOfYear возвращает порядковый номердень года, например, 1 февраля = 32
Пример №1: 18 января 2012 г., начало недели - понедельник
- dayOfYear (18 января,2012) = 18
- firstDateOfTheYear (понедельник, 2012) = 2 января 2012
(18 - 2) / 7 + 1 = 3 Ответ Неделя №.3
Пример № 2: 18 января 2012 г., начало недели - четверг
- dayOfYear (18 января 2012 г.) = 18
- firstDateOfTheYear (четверг, 2012) = 5 января 2012 года
(18 - 5) / 7 + 1 = 2 Ответ Неделя №.2
Пример № 3: 1 января 2012 г., начало недели - понедельник
- firstDateOfTheYear (понедельник, 2012) = 2 января 2012 г.
- IsLeapYear (2012-1) = false
1 января 2012 г. <2 января 2012 г. Ответ Неделя №.52 </p>