none
关于如何获取电脑时区信息的问题 RRS feed

  • 问题

  •       最近在做一个小软件,主要用来设置外部设备的时间时区等信息, 现在已经实现了读取注册表获取一份
    与电脑时区设置列表中一样的列表,
          现在的问题是,如何读取电脑当前时区信息,在一列表中的选项进行比较,并在ComboBox中显示出来

    通过GetTimeZoneInformation 可以读取
     
    Private Type TIME_ZONE_INFORMATION
    Bias As Long
    StandardName(0 To 31) As Integer
    StandardDate As SYSTEMTIME
    StandardBias As Long
    DaylightName(0 To 31) As Integer
    DaylightDate As SYSTEMTIME
    DaylightBias As Long
    End Type
       但是 StandardName和DaylightName 得到的是"XX标准时间","XX夏季时间",但是有时候会出现列表中多个都是
    一样的StandardName和DaylightName .
    比如 (GMT+01:00)贝尔格莱德,布拉迪斯拉发,布达佩斯和 (GMT+01:00)萨拉热窝,斯科普里,华沙,萨格勒布
     的StandardName和DaylightName   都是中欧标准时间,中欧夏季时间
    这样似乎没有办法区分
    如何才能得到一个唯一的时区信息,以便解决这个冲突呢?
    望老师们多赐教!
    2009年5月11日 10:08

全部回复

  • (GMT+01:00)贝尔格莱德,布拉迪斯拉发,布达佩斯和 (GMT+01:00)萨拉热窝,斯科普里,华沙,萨格勒布

    都是GMT+01,本身就是一个时区啊,区分什么呢?
    2009年5月11日 22:52
  • 时区是一样,但是你打开Windows时区设置可以看到是不一样的ItemData,
    比如 
    (GMT)格林威治标准时间:都柏林,爱丁堡,伦敦,里斯本
    (GMT)卡萨布兰卡
    (GMT)蒙罗维亚,雷克雅未克
    时区都是一样 ,但是有的是有夏令时,有的没有
    但是这三个可以通过StandardName和DaylightName 来鉴别
    而(GMT+01:00)贝尔格莱德,布拉迪斯拉发,布达佩斯和 (GMT+01:00)萨拉热窝,斯科普里,华沙,萨格勒布
    就不可以,
    有是什么办法可以读取时区是GMT+01:00)贝尔格莱德,布拉迪斯拉发,布达佩斯或是
    (GMT+01:00)萨拉热窝,斯科普里,华沙,萨格勒布,得到的就是个两条信息,而不是中欧标准时间或是中欧夏季时间


    2009年5月12日 1:16
  • 简单的办法是  getutcdate 与getdate 的差


    工作突然有点忙 嘿嘿
    2009年5月12日 2:37
  • (GMT+08:00)北京,重庆,香港特别行政区,乌鲁木齐
    (GMT+08:00)吉隆坡,新加坡
    (GMT+08:00)珀斯
    (GMT+08:00)台北
    (GMT+08:00)伊尔库茨克,乌兰巴图
    这些得到的只能是+08:00对吧   不能精确到那一个啊
    2009年5月13日 9:59
  • 现在要做的就是如果电脑当前是(GMT+08:00)北京,重庆,香港特别行政区,乌鲁木齐
    我就要知道是这行信息而不是其他行
    2009年5月13日 10:00