使用C#将时间转换为指定的时区?

Rav*_*avi 2 c# timezone datetime

我正在使用.Net 3.5在C#中开发应用程序.我有用户的时区值以这种格式存储在DB中(-05:00,1),其中-5.00表示EST时区值,1表示此时区遵循夏令时(如果0不是夏令时)区).

现在我想考虑夏令时值将任何日期时间值转换为此时区值.

任何帮助表示赞赏.谢谢

Jon*_*eet 5

只有一个偏移量以及它是否在夏令时中并不足以指示时区:可能有多个时区具有相同的标准偏移和DST偏移,但在不同时间具有DST转换.

这些数据是否已存在于数据库中,或者您仍在设计它?理想情况下,您应该存储一个时区ID - TimeZoneInfo使用的是Windows ID,这不是理想的IMO(我更喜欢IANA/Olson ID,业界其他人倾向于使用),但至少它确实代表了一个真实的时区.

一旦你有一个TimeZoneInfo你想要转换的瞬间,ConvertTimeFromUtc并且ConvertTimeToUtc可能是你想要的 - 但要注意"任何日期时间值"的含义; 你需要确保你总是确切知道你所代表的是什么.

BCL在所有这些方面都有些愚蠢,这是我启动Noda Time的原因之一,它允许使用IANA时区数据以及BCL.