118 114 113 112 bytes
Try it here!
A somewhat dumb but interesting approach I tried, I am pretty sure I can probably shorten this somewhere by 15-20~ Bytes, I will have to check it again later. The method uses two lookup arrays to figure out what to do with the date. Its worse than the other answers, but I thought its interesting enough to leave in after golfing it a bit. I am not really good at this yet haha.
Some thoughts that would be interesting to discuss, I see a few places where I can see an improvement being possible, but not sure how:
In the part (
a=int(i[:2]);b=int(i[3:]); this saves a number of bytes since I use a and b alot, but its still a very... ugly solution for the lack of a better word, I looked into
a,b=map(int,i.split(":")) which looks neater but unfortunately has the exact same size. I am still looking for a better solution here though.
I really hate how the lists/tuples are initialized, must be a better way..
Edit: I legitimately have no idea how I came up with this madness, but some weird maths helped me remove an extra byte, somehow haha...
I am certain I can push this further later..
Dang, just as I posted this I thought of a simple change with the signs that did save me another byte.