Python:给任意日期增加3周

37 投票
4 回答
73485 浏览
提问于 2025-04-16 12:59

我需要帮助写一个程序。
我想知道怎么在用户输入的日期上加上3周(也就是21天)?

用户会输入日期,格式是YYYY-MM-DD。

下面我在尝试找到日期中的连字符,并确保只有两个连字符。但我现在的代码只是重复自己,能告诉我哪里出错了吗?:

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 个回答

5

试试这个,我相信这是最简单快捷的方法。

from dateutil.relativedelta import relativedelta

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

你可以用一个叫做datetime.timedelta的东西来表示3周,然后把它加到表示用户输入的那个日期时间对象上。

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

81

使用 datetime 模块来完成这个任务。你需要创建一个带有日期和时间的对象,然后在这个对象上加上一个21天的时间差对象。

>>> 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

撰写回答