I'm in charge of coming up with a solution for implementing user-specific time zones in a brownfield application. Every single date that is stored in the database is stored in the server's local time. There is no time zone or offset information stored with these dates.
This is a very large application, so I realize this will be a lot of work. My concern is that we do this with as little risk as possible. Has anyone done this before? If so, what's the best approach, and what are some pitfalls to avoid?
The current thinking is that we convert all the data in our date columns which have a meaningful time component to UTC. Then, in the presentation layer, we'll need to run a function that converts a datetime object from UTC to the user's time zone at the time when we need to display it to the user.
It's an ASP .NET app with a SQL Server 2008 database. I mention this because there may be some useful tools within those technologies which I don't know about that we can use to help things go smoother.