Здравствуйте, xWanderer, Вы писали:
W>А как насчет обратной задачи? имеется например 31.12. как узнать к какой неделе относится эта дата, к 52-й неделе этого года или к 1-й неделе следующего года? именно по календарю!!! а не по порядковому номеру недели в году.
Не понял выделенное. Кстати, почему задача обратная? Та же самая: по дате надо узнать неделю.
W>т.к. по вышеизложенным алгоритмам 31.12 и 01.01 находящиеся в одной неделе выдадут разные номера нелеь если 01.01 — это 1-я неделя.
Из
определения ISO week numberАвтор: Кодт
Дата: 05.07.04
так и получается. 31.12 в этом случае в последней неделе старого года, а 01.01 — в первой неделе нового года. Если нужно относить 31.12 в такой ситуации к первой неделе нового года (что об этом думает ISO?

), добавляем еще одну коррекцию. Такое может произойти в следующих случаях:
пн вт ср чт пт сб вс
29 30 31 1 2 3 4
30 31 1 2 3 4 5
31 1 2 3 4 5 6
Условие:
if ( m==12 && d-29>=curDOW )
isoWeek = 1;

Д.К. << RSDN@Home 1.1.4 stable rev. 510>>