I wrote this somewhat thorough post about time, date, events, and timezones in response to a stackoverflow question once: http://stackoverflow.com/questions/2532729/daylight-saving-t...
It covers repeating events, historical accuracy, ranges, events that are fixed in localtime but variable in UTC, and more.
TL;DR: Always store UTC datetime + TimeZone, sometimes you need to store a little more information.