在.Net 3.5下有一个TimeZoneInfo类,可以很方便的转换时区和进行时间转换.但是在.Net 2.0下,只能对当前服务器时区进行处理,十分不方便.特别系统是世界范围使用的,更需要考虑当地时区特别是夏令时的问题,不然时间就会错乱.如何解决这个问题,就要通过自己手动处理了.

其实Windows的时区信息都存放在Windows注册表的"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones"下.只要读取相关信息出来.就能实现和TimeZoneInfo相同的功能.下边我们就通过一个小demo.读取世界时区信息,计算时区偏移量和夏令时偏移量.并根据用户选择的时区和输入时间,判断该时间是否属于该时区的夏令时范围.

.Net2.0下获取世界各时区信息及夏令时信息

 

首先,我们需要创建两个Struct来记录相关信息,一个是SytemTime,一个TimeZoneInformation.代码如下:

 

.GetHashCode();
        }
    }

 

.GetHashCode();
        }
    }

 

定义好相关Structs后,我们就可以读取注册表了.先定义几个读取注册表的方法:

 

);
}

 

下边我们开始读取注册表各个TimeZone信息

 

 tzInfos.ToArray();
}

 

可以看到上述代码是循环读取注册表里面的信息,通过SetVales方法放到一个List:

 

[]);
}

 

通过简单的读取信息填入TimeZoneInfo List,在页面级别我们就可以简单用下面的方法来显示给用户选择:

 

.drpList.DataBind();

 

当用选择了某一个时区,我们就可以根据用户选择的时区和输入的日期显示相关时区信息:

 

, dt.Delta.ToString());
}

 

更详细的东西就不废话了.附上完整的Demo给大家看吧:

下载Demo点击这里

相关文章:

  • 2022-12-23
  • 2021-10-07
  • 2021-08-30
  • 2021-08-18
  • 2022-12-23
  • 2021-07-10
  • 2021-09-21
  • 2021-09-14
猜你喜欢
  • 2022-12-23
  • 2021-12-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-03
  • 2022-12-23
相关资源
相似解决方案