That tablefield for exceptions needs to go. I'll probably move this whole thing over to DOM.
You should absolutely be able to set a span of time for a recurring event. If an event happens every Monday in June, just set the event start date to June 1, and the end date to June 30, and set up recursion for every Monday.
Again, if that doesn't work, please replicate it on the demo site.
As far as 7PM goes, that has to do with the UNIX epoch (Jan 1, 1970). If no time is specified, a timestamp will be an even number of days from the UNIX epoch. For those of us in GMT -4:00, it was 7:00PM on Dec 31st at that time. Those of you in Europe (probably +1 GMT, I'm guessing) got it at 1AM Jan 1st.
For date formatting in the CMS, use CalendarDateTime::set_date_format('dmy') (should default to that). Also DatePickerField::set_date_format('dmy');