App多时区测试
前几天我们的App遇到了时令交替后的时差问题,比如在欧洲冬令时与北京时间相差8小时,切换到夏令时与北京时间就相差7小时了,导致了一些问题。接下来我们来看看为什么会这样,以及要怎么解决这个问题。
一关于时区
这是课地理知识,地球经线有360度,一个时区的范围是15个经度,共分为24 个时区。地球又分东西半球,东西半球各占12个时区;每个时区相差1个小时,最多相差24小时,也就是1天
二、关于冬令时和夏令时
1、冬季时间通常指当地标准时间。在使用夏令时的地区,时钟在夏季拨快一小时,然后在冬季拨回标准时间。
2、夏令时是指为了节约能源而人为设定时间。又称夏令时(DST 即Daylight Saving Time的缩写),本制度实施过程中采用的统一时间称为夏令时(DST)。
3、一般在清晨的夏季,人们可以早起早睡,减少照明量,充分利用照明资源,从而节省照明用电。采用夏令时的国家具体规定不一样。目前,全世界每年有近110个国家实行夏令时。
4、有夏天的时候,就有冬天的时候。很多中高纬度国家在夏季到来前将时针拨快一小时,新的时间就是夏令时。在下半季秋季到来之前,将时针再拨回一个小时,这就形成了冬季时间。
5、不同国家冬令时和夏令时切换的时间不是统一的,可以参考这个
三、关于UTC
协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。
四、关于GMT
GMT(Greenwich Mean Time)——格林尼治标准时间(格林尼治所在地的标准时间),格林尼治标准时间是19 世纪中叶大英帝国的基准时间,同时也是事实上的世界基准时间。
地区:英国 皇家格林尼治天文台
时区:UTC/GMT 0 (零时区)
五、时间戳
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
六、问题以及解决办法
客户端上传设备所在时区与GMT的时间偏差到服务器,服务器只关注时间偏差,不关注设备的时区以及对应的国家地区。
后客户端上更改上报信息,新增设备所在的地区,服务器计算时差时根据地区和时区来进行计算。
夏令时比标准时快一个小时
技术上如何处理多时区