I am using UTC to store data and time values in the DB. The values are converted to localtime on the client or per client timezone. I stepped on these scenarios from the MSDN article, where displaying the time from UTC seems to pose issues during daylight savings.
Someone living on the east coast of the United States types in a value like "Oct 26, 2003 01:10:00 AM".
1) On this particular morning due to daylight savings, at 2:00 AM, the local clock is reset to 1:00 AM, creating a 25-hour day. Since all values of clock time between 1:00 AM and 2:00 AM occur twice on that particular morning—at least in most of the United states and Canada, the computer really has no way to know which 1:10 AM was meant—the one that occurs prior to the switch, or the one that occurs 10 minutes after the daylight savings time switch.
2) Similarly, the problem happens in the springtime when, on a particular morning, there is no such time as 2:10 AM. The reason is that at 2:00 on that particular morning, the time on local clocks suddenly changes to 3:00 AM. The entire 2:00 hour never happens on this 23-hour day.
How have you handled the situation #1, when you might have had 4 transactions, two prior to switch and two after switch in daylight savings? How to display the time to the user for the transactions, as the last two transaction could show up earlier time than the first two transactions due to the shift.? Sometimes, it could prove illogical for eg: in a mail chain.
ADDED:
To add more info about the context, the RIA apps such as Silverlight/Flash run on client(or any client app talking to server via Webservice) allow user to select time of delivery or schedule with the pc local time.
If i could check a given input time for invalid time, i could probably alert the user. Also, for travelers, the timezone needs to be found at the point of time and not based on user selection as they could be moving between zones and saving their timezone in the user profile won't help.
Some C# test samples for evaluating the input time:
//2:30 am CT to UTC --> 8:30 am
DateTime dt = new DateTime(2009, 03, 08, 2, 30, 00, DateTimeKind.Local);
//8:30 am UTC to CT --> 3:30 am.. which is as expected
DateTime dt1 = new DateTime(2009, 03, 08, 8, 30, 00, DateTimeKind.Utc);
//check for daylight saving time returns false.. ??
TimeZoneInfo.Local.IsDaylightSavingTime(dt);
//check for daylight saving time returns true
TimeZoneInfo.Local.IsInvalidTime(dt);