Don't use an iCalendar DATE value type for midnight!!
Creating an event starting at a time equivalent to midnight UTC results in a VEVENT in an iCalendar calendar like the following:
The above was the result of creating an event for 01:00-02:00 in Europe/London (UTC+1 at the moment).
This is totally wrong. It should be a DATE-TIME, like the end time above. The above start time is effectively a floating time, so now you have an event with a floating start time and time zone-anchored end time.
I couldn't find anything explicit in the RFC about interpretation of a DATE value used in this way, but given the absence of time zone specification in a DATE value, the value would be most sensibly interpreted as a floating time of 00:00.
That means another client would reasonably interpret the above as "starts at 00:00 local time, ends at 00:00 UTC". In fact that is what Evolution does - it's interpreted as 00:00-02:00 Europe/London (UTC+1).
Event DTEND seems to always be a DATE-TIME - only DTSTART seems to have this broken behaviour.