добавить дни к дате в Python, используя циклы, диапазоны и нарезки - PullRequest
0 голосов
/ 06 марта 2011

Я новичок в python, и недавно я научился выполнять основы:

функций, циклов, диапазонов, операторов for / 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

Я пытаюсь разбить его на YYYY-MM-DD и затем вычислить срок оплаты 7 дней сдата, которую ввел пользователь.

Вторая часть программы не работала с первой, я не знаю, как их объединить (или, если это вообще должно быть), пришлось бы мнеиспользовать функцию?

Не нужно учитывать високосные годы, и я не могу использовать такие модули, как дата и время, так как я их не изучил и хочу написать весь код, используя различные варианты циклови если / elif заявления.

Если кто-то может помочь указать мне правильное направление, я был бы очень признателен!

Спасибо,

D

Ответы [ 4 ]

3 голосов
/ 06 марта 2011

Освоив другие приемы, я бы сказал, что вам также следует изучить исключения и модуль 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 голосов
/ 06 марта 2011

Во-первых, ваш код очень трудно читать на сайте - его очистка может помочь.

Во-вторых, посмотрите на модуль 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

0 голосов
/ 26 февраля 2013

Использование может использовать функцию timedelta в модуле datetime

    from datetime import timedelta
    New_date=DateTime_obj-timedelta(days=No. of days to add)
0 голосов
/ 06 марта 2011

Я бы попробовал 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...