Python:在任何日期添加3周

mon*_*ica 20 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
Run Code Online (Sandbox Code Playgroud)

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

year = date[0:4]
month = date[5:7]
day = date[9:11]
Run Code Online (Sandbox Code Playgroud)

谢谢

Sen*_*ran 53

使用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
Run Code Online (Sandbox Code Playgroud)

  • 莫妮卡,我们应该把这个称为家庭作品吗? (2认同)

Ale*_*x Q 6

您可以使用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
Run Code Online (Sandbox Code Playgroud)

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


Ran*_*ore 5

试试这个,我确信这是最短、最简单的方法

from dateutil.relativedelta import relativedelta

period = date.today() + relativedelta(weeks=+1)
Run Code Online (Sandbox Code Playgroud)