Dates can certainly be a pain to work with, but it's important to understand a bit about what's going on behind the scenes.
The primary thing to understand is that a certain time is a certain time, regardless of what time zone you're in. If an asteroid strikes earth, it hits at a specific moment in time. It's the exact same moment in time for everyone, everywhere...the only difference is what their clocks say. This is easy to visualize with this cool tool :
http://everytimezone.com/ ; when you "switch" time zones, it's not the time that changes, it's the
clocks.
That's the underlying principle behind dates and times in every operating system and language that I know about.
So, the two times you mentioned in your post are the same moment in time, only with the clock shifted. You can safely store that time on the server in UTC. When you display the time for the client, you take the UTC time and "shift the clock" (adjust the time zone) on the client to match the local clock on their computer. This allows your app to service users in any time zone.
The most common reason that your times would be incorrect is when the user's computer clock is wrong. That's another nice feature of this truth about times...as soon as they fix their clock, the times display correctly again.
One thing I'll add here is that your server and your database may not be agreeing about the time zone either. I've run into issues with MS SQL server and
ASP.NET not agreeing when saving and loading times. If anyone else runs into that error, take a look at .NET's DateTime.SpecifyKind() after loading your UTC time from the database: you may have to set the kind to UTC for things to start working correctly. Usually the "kind" of dates loaded from SQL will be "Unspecified".
I hope this helps!
Ryan Rahlf
__________________
@Ryanthem