Я в аду календаря, и я надеюсь, что существует модуль Python, который делает то, что я хочу.
Я делаю веб-приложение на Python, которое работает с подписками. Концептуально он похож на план мобильного телефона: вы начинаете свою подписку в определенную дату (скажем, 1.13.2011
), и за каждый расчетный месяц у вас есть куча "сеансов" (телефонных звонков), за которые вы должны будете платить.
Нам нужно:
- Знать, к какому месяцу выставления счетов подпадает каждая сессия.
- Знать время начала и время окончания каждого расчетного месяца.
Например, если вы зарегистрировались на 1.13.2011
и сделали телефонный звонок на 1.20.2011
, это будет рассчитывать на ваш первый платежный месяц. То же самое для телефонного звонка на 2.10.2011
. Но если вы позвоните по номеру 2.15.2011
, он будет рассчитан на ваш второй расчетный месяц.
Относительно даты начала и окончания: если сегодня 2.15.2011
, тогда дата начала текущего месяца 2.13.2011
, а дата его окончания 3.13.2011
.
Возможно, вы думаете, что это не так сложно, но тогда вы должны учитывать, что месяцы имеют разную продолжительность. Правило обработки этого правила заключается в том, что если ваша подписка начинается 30-го числа любого месяца, ее предельные даты в каждом месяце будут min(30, n_days_in_that_month)
. Это относится и к 29, 30 и 31.
Я пытался кодировать это, но это стало слишком сложным. Я ищу готовый существующий модуль, который выполняет эти функции.
Ради любви к Богу, не оставляйте ответ с эскизом реализации! Это бесполезно для меня. Я ценю ваши намерения, но в аду календаря наброски реализаций не помогают. У меня уже есть эскиз реализации, и отладка вашей займет столько же времени, сколько отладка моей.
Меня интересует только использование существующего модуля, который обрабатывает такие задачи календаря. Знаете ли вы один?