2013-03-14 2 views
0

Я пишу назначение python, и мы пишем бронирование номеров клиентов отеля. И мы должны сравнить дату прибытия и вылета. если дата отправления раньше даты прибытия, она будет печатать сообщения об ошибках, но я все время получаю ошибку после запуска. Я не знаю почему .... я пытаюсь сделать namedtuple этой информации о клиенте, котораяpython- Дата сравнения

Бронирование = namedtuple («Бронирование», 'подтверждение room_number arrive_date depart_date имя)

так я взял come_date out (10/13/2008) и потому, что это строка, поэтому я ее разложил. И я попытался сделать все число вместе как int. После этого ...... я использую datetime ....... да ..... похоже, что я делаю что-то неправильно здесь. Я не понимаю смысл ошибки: Invalid буквального для междунаров() с основанием 10

Это моя программа:

elif lst[0]=='LR': 
     for r in new_reservation_list: 
      for d in r.arrive_date: 
       lsst=d.split() 
       month1=lsst[:2] 
       months=int(''.join([str(x) for x in month1])) 
       date1=lsst[3:5] 
       dates=int(''.join(([str(x) for x in date1]))) 
       year1=lsst[7:] 
       years=int(''.join(([str(x) for x in year1]))) 
      arrive_date1=datetime.date(int(months),int(dates),int(years)) 
      for e in r.depart_date: 
       lstt=e.split() 
       month2=lsst[:2] 
       months2=int(''.join([str(x) for x in month2])) 
       date2=lsst[3:5] 
       dates2=int(''.join(([str(x) for x in date2]))) 
       year2=lsst[7:] 
       years2=int(''.join(([str(x) for x in year2]))) 
      depart_date1=datetime.date(int(months2),int(dates2),int(years2)) 
      if arrive_date>depart_date==True: 
       print('Sorry, can''t reserve room', r.room_number,' (',r.arrive_date,' to ',r.depart_date,'); can''t leave before you arrive.') 
      elif lst[1] in new_reservation_list: 
        print('Sorry, can''t reserve room ',r.room_number, ' (',r.arrive_date,' to ',r.depart_date,'); it''s already booked (Conf. #',r.confirmation_number) 
      else: 
       print('Reserving room',r.room_number,'for',r.name,'-- Confirmation #',r.confirmation_number,'\n  ','arriving',r.arrive_date,', departing ',r.depart_date) 
       print('{:5}{:8}{:16}{:15}{:25}'.format('No.','Rm.','Arrive','Depart','Guest')) 
       print('{:5}{:4}{:12}{:12}{:17}'.format(r.confirmation_number,r.room_number,r.arrive_date,r.depart_date, r.name)) 
+0

Разбор даты таким образом не рекомендуется, попробуйте использовать регулярные выражения, ошибка возникает при принуждении строки к int. –

ответ

2

Проверить strptime функции в модуле времени. Вы можете конвертировать свою дату, используя эту функцию, и сравнить их.