Python: добавление 3 недели к любой дате - PullRequest
19 голосов
/ 04 марта 2011

Мне нужна помощь с программой.
Как добавить 3 недели (21 день) к любой конкретной дате, когда пользователь может контролировать дату?

Пользователь введет дату ГГГГ-ММ-ДД.

Ниже я пытаюсь найти дефис и убедиться, что есть только 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]

спасибо

Ответы [ 3 ]

51 голосов
/ 04 марта 2011

Используйте 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
6 голосов
/ 04 марта 2011

Вы можете использовать объект 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.

0 голосов
/ 18 сентября 2015

вы можете использовать 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)

Вот, пожалуйста,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...