|
10.03.2011, 12:28 | #1 |
Модератор
|
Несмотря на все протесты Mifi, функция работает некорректно. Никакие это ни майя - очередная бага, вернее, их скопище, которые лежат еще с 3ки, если не раньше.
Да, wkofyr(_date) - работает некорректно. Но для этого и был написан пафосный класс-обертка weekOfYear(), который учитывает локальные настройки, в частности, с какого дня начинается неделя, но при этом при формировании тестовой даты не учитывает, что год может быть високосным Ошибка возникает здесь, как я говорил: X++: if (week > 52) { // Look at the last day of the week and compare it // to the target date. If the year is different // then the target date is part of week 1 for next year. testDate = _curDate + ((#DaysPerWeek - 1) - dowCurDate); //Ошибка Ладно, хорошо. Может, в мире и не так. Тогда надо учитывать, что каждый 4й год происходит такая беда как високосный год, и testDate формируется некорректно. С Уважением, Георгий |
|
10.03.2011, 12:58 | #2 |
Участник
|
А при чём тут високосный год? testDate формируется с одной лишь целью - узнать на какой год попадает конец недели. В случае если неделя начинается в одном году а коньчается в другом, то ей присваивают первый номер! Зачем это сделано? Наверное для того чтобы дни одной и той же недели с понедельника по воскресенье всегда оказывались в одном номере недели.
|
|
10.03.2011, 13:07 | #3 |
Модератор
|
Цитата:
Да вот сам в шоке. Наверное, что бы понять, если последняя неделя года приходится с переходом на другой год, то дать ей номер 1? Цитата:
С Уважением, Георгий |
|
10.03.2011, 13:35 | #4 |
Участник
|
Цитата:
X++: testDate = _curDate + ((#DaysPerWeek - 1) - dowCurDate); Т.е. дата testDate не попадала на воскресенье? Мне это воспроизвести не удалось. |
|