Добавлять дни к дате в Python с использованием циклов, диапазонов и разрезов
Я новичок в python, и недавно я узнал, как сделать основы:
циклы, диапазоны, для операторов /if и нарезки строк.
До сих пор я:
date = raw_input("Enter the date checked out in YYYY-MM-DD format: ")
dueDate = raw_input("Book is due:")
length = len(date)
counter=0
for i in range(length):
if date[i] == "-":
counter = counter + 1
if 1 < counter < 2:
print date
if counter > 2:
print date,"too many hyphens"
if counter <= 1:
print date,"not enough hyphens"
Тогда у меня было:
year = date[0:4]
month = date[4:6]
day = date[6:10]
if year == date[0:4]:
year=year
if month == date[4:6]:
month = month
if day == date[6:10]:
day=day
print year+month+day
Я пытаюсь разбить его на ГГГГ-ММ-ДД, а затем вычислить соответствующую дату 7 дней с даты ввода пользователя.
Вторая часть программы не работала с первой, я не знаю, как их объединить (или, если она вообще должна быть), я должен использовать функцию?
Не нужно учитывать годы високосного развития, и я не могу использовать модули, такие как дата и время, так как я их не изучил, и я хочу написать весь код, используя разные варианты циклов и if/elif.
Если кто-то может помочь указать мне в правильном направлении, я бы очень признателен!
Спасибо,
D
Ответы
Ответ 1
Освоив другие методы, я бы сказал, что вы также должны узнать об исключениях и модуле datetime. Это полезно для проверки даты здесь.
import datetime
while True:
try:
date = datetime.datetime.strptime(raw_input("Enter the date checked out in YYYY-MM-DD format: "), "%Y-%m-%d")
except ValueError:
print "The date was not inserted in the following format: YYYY-MM-DD"
else:
break
~
Ответ 2
Во-первых, ваш код очень трудно прочитать на сайте - его можно было бы очистить.
Во-вторых, посмотрите на модуль datetime. Он предоставляет услуги для перевода текста в объекты даты, а затем обратно в текст.
Как только у вас есть объект даты, вы можете сделать массу вещей, например:
Python 2.7 (r27:82508, Jul 3 2010, 21:12:11)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime, timedelta
>>> d = datetime.strptime('2011-03-05','%Y-%m-%d')
>>> d
datetime.datetime(2011, 3, 5, 0, 0)
>>> d.strftime('%Y-%m-%d')
'2011-03-05'
>>> tomorrow = d+timedelta(days=1)
>>> tomorrow
datetime.datetime(2011, 3, 6, 0, 0)
>>> tomorrow.strftime('%Y-%m-%d')
'2011-03-06'
Смотрите: http://docs.python.org/library/datetime.html
Ответ 3
Я бы попробовал datetime
, даже если вы еще не узнали об этом. Я не думаю, что это сложно или сложно изучить. Использование его будет намного проще, чем любой домашний метод. Используйте datetime.date()
для дат и datetime.timedelta
, чтобы добавить (или вычесть) некоторое количество дней.
import datetime
datestr = raw_input("Enter the date checked out in YYYY-MM-DD format: ")
year,month,day = datestr.split('-')
date = datetime.date(year,month,day)
duedate = date + datetime.timedelta(days=7)
print 'Due date is : {0}'.format(duedate)
Ответ 4
Использование функции timedelta в модуле datetime
from datetime import timedelta
New_date=DateTime_obj-timedelta(days=No. of days to add)