Using C#, I need to convert incoming datetime values into UTC. I know there is functionality in .NET for these conversions but all I have to identify the timezone is the standard timezone list
http://www.timegenie.com/timezones
What’s the best way to do this in .NET? Will I need to create a mapping table to convert the timezones to the IDs in TimeZoneInfo.GetSystemTimeZones() (e.g. “Pacific Standard Time (Mexico)”)
so that I can then use TimeZoneInfo.FindSystemTimeZoneById()?
Thanks for any help
I’ve done it before by storing the timezone id in the database using a mapping table. i.e. A table containing the results of
TimeZone.GetSystemTimeZones()You don’t actually need to use
TimeZoneInfo.FindSystemTimeZoneById()though: you can do the conversion using one of the overloads ofTimeZoneInfo.ConvertTimeBySystemTimeZoneId(). This method has some overloads which take DateTime values, and some that take DateTimeOffset values (which are preferable as they specify an unambiguous point in time).e.g.
The real benefit of using the system time zone id rather than an offset stored in the database is that daylight savings time is automatically handled for you by
TimeZoneInfo.ConvertTimeBySystemTimeZoneId.