Convert a time to specified time zone using C#?
我正在使用.Net 3.5在C#中开发应用程序。 我有用户的时区值以这种格式存储在DB中(-05:00,1),其中-5.00表示EST时区值,1表示此时区遵循夏令时(如果0不是夏令时) 区)。
现在我想考虑夏令时值将任何日期时间值转换为此时区值。
任何帮助表示赞赏。 谢谢
只有一个偏移量以及它是否在夏令时中并不足以指示时区:可能有多个时区具有相同的标准偏移和DST偏移,但在不同时间具有DST转换。
这些数据是否已存在于数据库中,或者您仍在设计它?理想情况下,您应该存储时区ID -
一旦你有一个
BCL在所有这些方面都有点毛茸茸,这是我启动Noda Time的原因之一,它允许使用IANA时区数据以及BCL。
@skeet对时区是正确的。相信我他们疯了。你有像印度这样的地方,可以休息0.5小时。像委内瑞拉这样的地方,只是改变他们的时区。像美国这样的地方改变他们的夏令时开始和结束的日期。你必须记住,时区受制于国家的政治意愿,而且它们确实会发生变化(比你想象的更频繁)。使用时区ID而不是尝试跟踪数据库中的偏移量。
如果您还没有弄清楚,如果您必须处理时区,使用DateTimeOffset将使您的生活更轻松100倍。
为此使用DateTime.ParseExact()。但这不支持DST指标。
为什么不获得GMT0并添加用户的延迟(+/-)?