Python:在任何日期添加3周

时间:2011-03-04 04:46:23

标签: python date

我需要一个程序的帮助 如果用户可以控制日期,如何在任何给定日期添加3周(21天)?

用户将输入日期YYYY-MM-DD。

下面我试图找到连字符,并确保只有2.这是我到目前为止所做的一切,但它重复了一遍,有人能告诉我哪里出错了吗?:

date = raw_input("Enter date: ")
i = 0
while i <= len(date):
    if date[i] != "-":
    i = i + 1
print date

现在我正在挑选年,月,日。有没有更简单的方法来做这个因为我需要考虑更改月份等?

year = date[0:4]
month = date[5:7]
day = date[9:11]

感谢

4 个答案:

答案 0 :(得分:51)

使用datetime模块完成任务。您创建一个日期时间感知对象并添加21天timedelta对象。

>>> import datetime
>>> u = datetime.datetime.strptime("2011-01-01","%Y-%m-%d")
>>> d = datetime.timedelta(days=21)
>>> t = u + d
>>> print(t)
2011-01-22 00:00:00

答案 1 :(得分:5)

您可以使用datetime.timedelta对象表示3周,然后将其添加到表示用户输入的datetime对象。

import datetime

date = raw_input("Enter date: ")
aDate = datetime.datetime.strptime(date,"%Y-%m-%d")
threeWeeks = datetime.timedelta(weeks = 3)

print aDate + threeWeeks

有关使用strptime方法的详细信息,请参阅http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior

答案 2 :(得分:1)

尝试一下,我相信它是最短,最简单的方法

from datetime import date

from dateutil.relativedelta import relativedelta

period = date.today() + relativedelta(weeks=+1)

答案 3 :(得分:-1)

您可以使用datetime.strptime从用户那里获得日期输入

from datetime import datetime
i = str(raw_input('date'))
try:
    dt_start = datetime.strptime(i, '%Y, %m, %d')
except ValueError:
    print "Incorrect format"

然后再添加3周(21天)

dt_start = dt_start + datetime.timedelta(days=21)

你去了