c#时区问题

时间:2011-04-03 18:45:22

标签: c# timezone

我为我的网站实施了一个国家/地区/城市数据库。每个城市都有一个以-06:00,+ 09:00等格式存储为Varchar(32)的timezoneoffset。现在我不太清楚如何转换存储在数据库中的具有这些特定偏移的UTC时间。我知道可以使用TimeZoneInfo.FindSystemTimeZoneById进行转换,但是我无法使用“半数字”值进行转换。

有没有人知道如何解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:3)

如果你有偏移,那么你想要DateTimeOffset - 你真的不需要时区。另一方面,您应该知道您所获得的内容不会准确地反映当地时间,因为由于夏令时,大多数地方的单一偏移量不足。

我建议您存储一个实际时区ID ...如果肯定想要存储单个偏移量,我建议您存储分钟数在一个整数字段中 - 引入一个你只需要再次解析的字符串表示没有意义。

答案 1 :(得分:1)

您可以使用TimeZoneInfo.CreateCustomTimeZone()

DateTime utcTime = DateTime.UtcNow;
TimeZoneInfo targetTimeZone = TimeZoneInfo.CreateCustomTimeZone("MyId", TimeSpan.FromHours(-6), "Somewhere", "Somewhere");
DateTime targetTime = TimeZoneInfo.ConvertTime(utcTime, targetTimeZone);