Форум сайта python.su
есть дата…2008.10.02 00:10:23.00741 и есть вторая…2008.09.29 00:45:23.00321..надо отбросить число месяца и временную часть и посчитать разницу месяцев…здесь разница дат будет 1 месяц..даты получены из ДБ оракл через for … а.fetchall():
Офлайн
самый простой вариант, без использовать datetime, timedelta.
s = lambda s: int(s.split('.')[1])
s(d1) - s(d2)
Офлайн
Dimka665
Можно маленько допинать :)
s = lambda d1,d2: int(d1.split('.')) - int(d2.split('.'))+(int(d1.split('.'))-int(d2.split('.')))*12
s(d1,d2)
Офлайн
hellsladeтогда уж так:
Dimka665
Можно маленько допинать :)
s = lambda d1,d2: int(d1.split('.')) - int(d2.split('.'))+(int(d1.split('.'))-int(d2.split('.')))*12
s(d1,d2)
s = lambda s, i: int(s.split('.')[i])
(s(d1, 0) - s(d2, 0))*12 + s(d1, 1) - s(d2, 1)
Офлайн
ого..пасиб ребята…ща тестить буду..
а если с использованием datetime…fetchall возвращаеет мне в datetime.datetime.. хотя наверное проще то что он возвращает в строку разобрать..
Отредактировано (Дек. 10, 2008 14:09:49)
Офлайн
Предложенные ребятами варианты плохи. Слишком perlish ;)
>>> def months(d1, d2):
...: return d1.month - d2.month + 12*(d1.year - d2.year)
>>> d1 = datetime.datetime(2008, 10, 2, 00, 10, 23)
>>> d2 = datetime.datetime(2008, 9, 29, 00, 45, 23)
>>> d3 = datetime.datetime(2009, 1, 1)
>>> months(d1, d2)
<<< 1
>>> months(d3, d2)
<<< 4
>>> months(d3, d1)
<<< 3
Офлайн