.NET converting datetime to UTC given the timezone

左心房为你撑大大i 提交于 2019-12-01 15:02:32

问题


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


回答1:


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 of TimeZoneInfo.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.

TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, "New Zealand Standard Time", "UTC")

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.




回答2:


There is a lot of information on MSDN about converting to different time zones.

  • DateTime (MSDN), specifically look at 'DateTime Operations'.
  • TimeZoneInfo

You probably want to use ConvertTimeBySystemTimeZoneId method (follow link for examples).




回答3:


DateTime.ToUniversalTime Method

Or

DateTime.UtcNow Property



来源:https://stackoverflow.com/questions/6949779/net-converting-datetime-to-utc-given-the-timezone

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!