порядковый номер недели
От: stigger  
Дата: 15.09.05 16:39
Оценка:
как узнать порядковый номер недели с начала года?
Re: порядковый номер недели
От: Глеб Алексеев  
Дата: 15.09.05 16:56
Оценка: 70 (4)
Здравствуйте, stigger, Вы писали:

S>как узнать порядковый номер недели с начала года?

Рекомендую:
http://www.tondering.dk/claus/cal/calendar27.pdf

Очень помогло при изобретении своего велосипеда — класса Time.


d4 = (J + 31741 − (J % 7)) % 146097 % 36524 % 1461
L = d4/1460
d1 = ((d4 − L) mod 365) + L
WeekNumber = d1/7 + 1

где
J = day + (153m+2)/5 + 365y + y/4 − y/100 + y/400 − 32045
a = (14−month)/12
y = year + 4800 − a
m = month + 12a − 3
Re[2]: порядковый номер недели
От: Кодт Россия  
Дата: 16.09.05 06:57
Оценка:
Здравствуйте, Глеб Алексеев, Вы писали:

ГА>Рекомендую:

ГА>http://www.tondering.dk/claus/cal/calendar27.pdf

Интересное чтиво

ГА>Очень помогло при изобретении своего велосипеда — класса Time.

ГА>d4 = (J + 31741 - (J % 7)) % 146097 % 36524 % 1461
ГА>L = d4/1460
ГА>d1 = ((d4 - L) mod 365) + L
ГА>WeekNumber = d1/7 + 1

ГА>где
ГА>J = day + (153m+2)/5 + 365y + y/4 - y/100 + y/400 - 32045
ГА>a = (14-month)/12
ГА>y = year + 4800 - a
ГА>m = month + 12a - 3

Прикольно, но отлаживать забодаешься.
К тому же, есть несколько способов нумерации недель (ISO, американская)...
Перекуём баги на фичи!
Re[3]: порядковый номер недели
От: Глеб Алексеев  
Дата: 16.09.05 07:07
Оценка:
Здравствуйте, Кодт, Вы писали:
К>Прикольно, но отлаживать забодаешься.
А чего отлаживать? Там глючить нечему, кроме возможного переполнения и signed/unsigned преобразований. Тестировать надо, конечно.
К>К тому же, есть несколько способов нумерации недель (ISO, американская)...
Это формула для ISO.
Re[4]: порядковый номер недели
От: Глеб Алексеев  
Дата: 16.09.05 07:48
Оценка:
Здравствуйте, Глеб Алексеев, Вы писали:

К>>Прикольно, но отлаживать забодаешься.

ГА>А чего отлаживать? Там глючить нечему, кроме возможного переполнения и signed/unsigned преобразований. Тестировать надо, конечно.
Да, т.к. мы в "Алгоритмах", я и привел ссылку на алгоритм, а в Boost.DateTime это уже реализовано (не помню насчет номера недели, но Julian day number точно).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.