|
|
|||||
Календарные исчисления
Друзья, коллеги, багородный сенат.
Ищу несколько алгоритмов, относящихся к вычислениям с календарными датами, ибо смутно ощущаю, что изобретаю какие-то дикие велосипеды, а все уже придумано до нас. А именно. Есть две даты: Надо: 1. Получить _ВСЕ_ наборы от dayIn до dayOut в виде день-месяц-год... Сйчас реализовано в виде аж трех вложенных циклов, что, на мой взгляд, омерзительно: var allBronCelles = [] for ( var Y=StartYear; Y<=FinYear; Y++ ){ // Перебираю годы if ( StartYear == Y ){ A = StartMnt } else { A = 0 } if ( FinYear == Y ){ B = FinMnt } else { B = 11 } for (var MN = A; MN<= B; MN++ ){ // Перебираю месяцы if ( StartMnt == MN ) { SD = StartDay } else { SD = 1 } if ( FinMnt == MN ) { FD = FinDay } else { FD = getDaysInMonth( Y )[ MN ] } for ( var DAY = SD; DAY<=FD; DAY++ ){ // Перебираю дни allBronCelles.push( { D:DAY, M:MN, Y:Y } ) } } } 2. Надо получить кол-во дней, прошедших от одной даты до другой. У меня решение сейчас сводится к предыдущему динозавру + счетчик этих дней. 3. Определить, сколько дней относится к каждому из месяцев, входящих в диапазон.... По идее снова берем ужас из п.1. и при смене месяца (корявость) счетчики пихаем в массив... Подразумевается, что year1 - year2 может занимать лет 10-20.... Високостности, разные длины месяцев и прочее учитывается.... За неконвенционность - сорри. |
Часовой пояс GMT +4, время: 00:43. |
|
« Предыдущая тема | Следующая тема » |
|
|