我需要一个程序的帮助 如果用户可以控制日期,如何在任何给定日期添加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]
感谢
答案 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)
你去了