使用C#获取当前Windows所设定的时区

本文介绍了一种通过读取注册表来枚举系统中所有可用时区的方法。该方法使用了锁来确保线程安全,并利用.NET Framework提供的RegistryKey类从注册表中获取时区名称及其详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public   static  TimeZoneInformation[] EnumZones()
          {
            if ( s_zones == null )
         {
                 lock( s_lockZones )
                 {
                     if ( s_zones == null )
                    {
                         ArrayList zones = new ArrayList();

                      using ( RegistryKey key = 
                                    Registry.LocalMachine.OpenSubKey( 
                                    @"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones" ) )
                        {
                            string[] zoneNames = key.GetSubKeyNames();

                            foreach ( string zoneName in zoneNames )

                          {                    

                    using ( RegistryKey subKey = key.OpenSubKey( zoneName ) )


                               {               

                          TimeZoneInformation tzi = new TimeZoneInformation();

                                   tzi.m_name = zoneName;

                                    tzi.m_displayName = (string) subKey.GetValue( "Display" );                       

            tzi.m_standardName = (string) subKey.GetValue( "Std" );



                                   tzi.m_daylightName = (string) subKey.GetValue( "Dlt" );
                                  tzi.m_index = (int)( subKey.GetValue( "Index" ) );

                                   tzi.InitTzi( (byte[]) subKey.GetValue( "Tzi" ) );
                         
                                    zones.Add( tzi );
                                }

                            }

                        }


                        s_zones = new TimeZoneInformation[ zones.Count ];

                      zones.CopyTo( s_zones );
                  }

              }

           }


            return s_zones;
       }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值