Календарные исчисления
Друзья, коллеги, багородный сенат.
Ищу несколько алгоритмов, относящихся к вычислениям с календарными датами, ибо смутно ощущаю, что изобретаю какие-то дикие велосипеды, а все уже придумано до нас. А именно. Есть две даты: Код:
datIn = {D:day1, M:month1, Y:year1} 1. Получить _ВСЕ_ наборы от dayIn до dayOut в виде день-месяц-год... Сйчас реализовано в виде аж трех вложенных циклов, что, на мой взгляд, омерзительно: Код AS1/AS2:
2. Надо получить кол-во дней, прошедших от одной даты до другой. У меня решение сейчас сводится к предыдущему динозавру + счетчик этих дней. 3. Определить, сколько дней относится к каждому из месяцев, входящих в диапазон.... По идее снова берем ужас из п.1. и при смене месяца (корявость) счетчики пихаем в массив... Подразумевается, что year1 - year2 может занимать лет 10-20.... Високостности, разные длины месяцев и прочее учитывается.... За неконвенционность - сорри. |
Делаем две даты, вычитаем time, делим на ms * s * m * h, и получаем количество дней + 1 в данном диапазоне.
Дальше нужен только один цикл. |
В целом - логично. Но... у меня предполагается генерить 100-200-... подобных выборок длиной до 150-300 "дней".
Соответственно вопрос: не будет ли Date тормозить данный процесс в особо крупных размерах... И не будет ли все это менее энергоемко на циклах или еще каких вариантах высокопроизводительных алгоритмах? Дело не в том, что я не знаю КАК.... Мне кажется, что я не знаю как это сделать эстетично :) Эксперименты с секундомером пока не производил, ибо подозреваю, что опять-таки я велосипед изобретать стану. |
типа эстетично
Код AS1/AS2:
насчет 'тормозить в особо крупных размерах..' имхо напрасные опасения, нечему тут особо тормозить-то |
dark256, когда вы сказали, что регулярно забиваете на концепции, я подумал, что вы пошутили...
|
Код AS3:
|
а вот еще эстетические вариации: один раз генерим список дат и из него потом дергаем что потребуется
Код AS3:
|
Часовой пояс GMT +4, время: 18:05. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.