我的数据库为每个国家/地区提供GMT差异,例如 GMT + 02:00 和 GMT-04:00 使用C#.net有一种简单的方法可以将其转换为实际的.Net时区吗?
e.g。 “东部标准时间”或“E.澳大利亚标准时间”
感谢
答案 0 :(得分:4)
你可以找到一个时区,而不是那个你想要的时区。 UTC偏移是不明确的。
是GMT + 02:00的偏移量你特别喜欢什么?你会用这样的表达式得到它们:
public static TimeZoneInfo[] GetTimeZones(TimeSpan offset) {
return TimeZoneInfo.GetSystemTimeZones().Where(z => z.BaseUtcOffset == offset).ToArray();
}
我不得不看一些这些。 FLE =芬兰,立陶宛,爱沙尼亚。 GTB更加强硬,我猜想希腊,土耳其,保加利亚。
答案 1 :(得分:1)
这是不可能的,因为不同的时区可以与GMT共享相同的偏移量(或者更正确的UTC)。
答案 2 :(得分:1)
如果您期望“东部标准时间”,那么您需要的信息不仅仅是GMT的偏差。例如,GMT-5是东部标准时间,中部夏令时,东部标准时间(印第安纳州)和各种南美时区,无论是否有夏令时,以及与美国不同的DST时间表。
答案 3 :(得分:0)
如果您对第一个匹配GMT偏移量的TimeZone感到满意,那应该很容易。
这是我的想法,但是......
TimeZoneInfo getTimeZone(string gmtstring)
{
foreach(TimeZoneInfo ti in TimeZoneInfo.GetSystemTimeZones())
{
TimeSpan tsp = ti.BaseUtcOffset;
if(tsp.ToString((tsp.TotalMinutes < 0 ? "-" : "+")+"hh:mm") == gmtstring.Substring(3))
return ti;
}
return null;
}
否则时区与GMT偏移之间没有直接关系(相同的GMT偏移有许多时区,正如其他人所说的那样)
PS:gmtstring应该是“GMT(+ | - )HH:SS”格式