Найти - Пользователи
Полная версия: Timedelta и month.
Начало » Python для экспертов » Timedelta и month.
1 2
Sodrian
Всем доброго дня!

Скажите, как можно преодолеть отсутствие у deltatime аргумента month.
Нужно вычислять две даты, месяц назад и два месяца назад, а конструкци типа timedelta(month=1) не работает.
bialix
а сколько в месяце дней? ;-)
j2a
это знает calendar
Sodrian
bialix
а сколько в месяце дней? ;-)
От 28 до 31, а мне нужно точно, если сегодня 20 сентября, то месяц назад будет ровно 20 августа и т.п.

j2a
это знает calendar
Может будут еще предложения?
Александр Кошелев
Sodrian
От 28 до 31, а мне нужно точно, если сегодня 20 сентября, то месяц назад будет ровно 20 августа и т.п.
НУ так и отматывай месяца. month - 1, month - 2. не забывай конечно о смене года.
Sodrian
Daevaorn
НУ так и отматывай месяца. month - 1, month - 2. не забывай конечно о смене года.
Это было одно из первых, что пришло в голову, но меня смутила некая костыльность этого метода, я думал, что должно быть в python'е что-нибудь элегантнее.
Александр Кошелев
Sodrian
Это было одно из первых, что пришло в голову, но меня смутила некая костыльность этого метода, я думал, что должно быть в python'е что-нибудь элегантнее.
“костыльности” в этом самая малость. кстати это может быть одна из причина по кторой в timedelta всё кончается на week…
j2a

>>> def month_ago(date=None):
…: if date is None:
…: date = datetime.date.today()
…: _d = date - datetime.timedelta(weeks=4)
…: return datetime.date(_d.year, _d.month, date.day)
…:

>>> month_ago()
<<< datetime.date(2007, 8, 20)
>>> month_ago(datetime.date(2007, 1, 15))
<<< datetime.date(2006, 12, 15)
bialix
ммм, что-то мне подсказывает что месяц это не 4 недели.
j2a
Это не важно. Важно, что не меньше. Не понятно, правда, что делать с 31-30-28 числами. Т.е., спросив “месяц назад от 31.03.2007”, не понятно, корректно ли получать 28.02.2007. Если да, то модуль calendar подскажет, сколько дней в интересующем месяце, так что доработать мой код – не проблема. Тем более, это не готовый рецепт, а набросок, направление.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB