Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
VictorSmirnov 14.10.2003 15:33
Комментариев у меня больше чем вычислений,@wn[d][fd;wd] # $fd - первый день года $fd[^date::create($d.year;1;1)] # $sd - дата конца первой недели. нумерация с 1 ^if($fd.weekday == 0){ $sd(1) }{ $sd(8 - $fd.weekday) } # Находим k, такое что # $d.yearday + 1 = $sd + 1 + 7*k + m, где 0 <= m < 7 # В левой части у нас текущий день (начиная с 1) # В правой части мы от первого дня второй недели отступаем ровное # количество недель и еще меньше семи дней. Сколько недель отступили # показывает искомая величина k # нетрудно видеть, что # k = ( $d.yearday - $sd ) \ 7 # Число недель равно k+2. Действительно, первую неделю мы пропустили # потом k недель отступили и уже идет (k+1) + 1 неделя ^if($d.yearday < $sd){ # это тот редкий случай, когда наша формула не работает :) $result(1) }{ $result(($d.yearday - $sd)\7 + 2) }Кстати, ваш вариант не работает для первого января, например.