Python Forum
%d %m %y dont match my dates
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
%d %m %y dont match my dates
#1
Ive made a code and i need help i have python 3.4 and i made a game using a guide that said to use python 3.6 heres my code
it says that %d %m %y dont match my dates
from tkinter import Tk, Canvas
from datetime import date, datetime
def get_events():
    list_events = [] 
    with open('events.txt') as file:
        for line in file:
            line = line.rstrip('\n')
            current_event = line.split(',')
            event_date = datetime.strptime(current_event[1], '%d %m %y').date()
            current_event[1] = event_date
            list_events.append(current_event)
    return list_events
def days_between_dates(date1, date2):
    time_between = str(date1 - date2)
    number_of_days = time_between.split(' ')
    return number_of_days[0]
root = Tk()
c = Canvas(root, width=800, height=800, bg='black')
c.pack()
c.create_text(100, 50, anchor='w', fill='white',\
font='Arial 28 bold underline', text='My Countdown Calender')

events = get_events()
today = date.today()

vertical_space = 100

for events in events:
    event_name = event[0]
    days_until = days_between_dates(event[1], today)
    display = 'it is %s days until %s' % (days_until, event_name)
    c.create_text(100, vertical_space, anchor='w', fill='lightblue', font='Arial 28 bold', text=display)

    vertical_space = vertical_space + 30
Reply
#2
'%d %m %y' is the format you are saying the date is in, in the file events.txt.
In this case you are saying the dates format is 21 01 19
more info here
https://www.journaldev.com/23365/python-...e-strptime
Recommended Tutorials:
Reply
#3
thank you so much that helped alot
Reply
#4
thanks for the help but after i did it, it showed me an error message saying:

Traceback (most recent call last):
File "C:\Python34\Callender.py", line 29, in <module>
event_name = event[0]
NameError: name 'event' is not defined

so if anyone can would you plz help me?
Reply
#5
Quote:
for events in events:
    event_name = event[0]
im assuming you meant
for event in events:
    event_name = event[0]
Recommended Tutorials:
Reply
#6
I used 28 01 19 in the events.txt, and put in a print(events) line the out put is: [[datetime.date(2019, 1, 28)]].
A list of a list datetime.date object. Then changed the end of your script
events = get_events()
today = date.today()
print(events[0][0]) 
print(today.isoformat())
myEvents= events[0][0].timetuple()
print(myEvents[0])

vertical_space = 100
days_until = days_between_dates(events[0][0], today) 

days_until = days_between_dates(events[0][0], today)
display = 'it is %s days until %s' % (days_until, myEvents[0])
c.create_text(100, vertical_space, anchor='w', fill='lightblue', font='Arial 28 bold', text=display)
 
vertical_space = vertical_space + 30
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020