Как вычесть день из формата даты и времени в Python?

Я пытаюсь распечатать дневные диапазоны с сегодняшнего дня до года назад. Так что я могу применить это к sql-запросу в другом моем коде.
Я знаю, что мой алгоритм работает, но мне нужно вычесть 1 день из формата '2014-05-15' Вот код

from datetime import date, timedelta
import datetime
current_date = datetime.date.today()
datecounter = 0
while datecounter != 365:
    print current_date
    date_start = current_date
    print date_start
    # current_date = current_date.timedelta(days=1)
    print current_date
    print 'the date is between', date_start, 'and', current_date
    datecounter += 1

Я ищу этот код для вывода

the date is between 2014-05-16 and 2014-05-15
the date is between 2014-05-15 and 2014-04-14

и т.д

Я написал надуманный пример, основанный на логике, если вы хотите запустить его самостоятельно, вы можете лучше понять, что я пытаюсь сделать.

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
curdate = 5
for i in x:
    print curdate
    date_start = curdate
    curdate = curdate - 1
    # print curdate


    print ' the date is between', date_start, 'and', curdate
    print ' ---------- '

person Dap    schedule 16.05.2014    source источник


Ответы (1)


curdate=curdate-datetime.timedelta(days=1)

См. этот вопрос о стеке

Изменить

Ваш код также может быть очищен:

from datetime import date, timedelta

cur_date = date.today()
for i in xrange(365):
    start_date, cur_date = cur_date, cur_date-timedelta(days=1)
    print "the date is between {} and {}".format(start_date.strftime("%Y-%m-%d"), cur_date.strftime("%Y-%m-%d"))

Это выведет именно то, что вы хотите.

person MikeRixWolfe    schedule 16.05.2014
comment
у меня это в моем коде закомментировано - person Dap; 16.05.2014
comment
У вас есть закомментированная строка в вашем коде, однако вы устанавливаете current_date равным timedelta. вам нужно убедиться, что вы действительно вычитаете. - person lafferjm; 16.05.2014
comment
Как сказал @lafferjm, прокомментированная строка - это проблема; поскольку он на самом деле не делает то, что вы думаете, он делает - person MikeRixWolfe; 16.05.2014
comment
извините за повторяющийся пост - person Dap; 16.05.2014
comment
спасибо, Майк на самом деле собираюсь использовать это - person Dap; 16.05.2014