[Description] Android时区信息是由data文件保存,KK之前的版本是三个文件(zoneinfo.dat, zoneinfo.idx,zoneinfo.version),KK之后只有一个文件(tzdata)。由于各国的时区信息是会变化的,例如2014年6月13日,俄罗斯宣布从2014年10月26日之后全国时区推后一小时,比如莫斯科之前是GMT+4,修改后是GMT+3;如某个时区去掉2015年永久取消夏令时;但是android中的该文件不会自动更新,所以测试过程中会遇到手机的时区信息显示不正确。这种情况下,就需要更新手机的时区信息文件。 [Solution] 一、下载tztada包 在网址ftp://ftp.iana.org/tz/releases/下载tzdata*.tar.gz,对于KK下载最新的即可,如果是KK之前的版本请下载2013年的版本。解压后拷贝到路径\bionic\libc\tools\zoneinfo下。找到时区所在文件,是按照城市所在洲命名的文件。 1、夏令时(如Mexico在文件northamerica) # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Mexico 1939 only - Feb 5 0:00 1:00 D Rule Mexico 1939 only - Jun 25 0:00 0 S Rule Mexico 1940 only - Dec 9 0:00 1:00 D Rule Mexico 1941 only - Apr 1 0:00 0 S Rule Mexico 1943 only - Dec 16 0:00 1:00 W # War Rule Mexico 1944 only - May 1 0:00 0 S Rule Mexico 1950 only - Feb 12 0:00 1:00 D Rule Mexico 1950 only - Jul 30 0:00 0 S Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D Rule Mexico 2001 only - Sep lastSun 2:00 0 S Rule Mexico 2002 max - Apr Sun>=1 2:00 1:00 D Rule Mexico 2002 max - Oct lastSun 2:00 0 S 红色字体1:00表示有夏令时,要加一小时;0表示不用加。前面的时间是执行夏令时的时间段。如果要求2014年开始每年4月1日到10月31日执行夏令时,其余时间取消夏令时可以新增如下2句: Rule Mexico 2014 max - Apr 1 2:00 1:00 D Rule Mexico 2014 max - Oct 31 2:00 0 S 2、时区(如Moscow在文件europe) Zone Europe/Moscow 2:30:17 - LMT 1880 2:30:17 - MMT 1916 Jul 3 # Moscow Mean Time 2:31:19 Russia %s 1919 Jul 1 2:00 3:00 Russia %s 1921 Oct 3:00 Russia MSK/MSD 1922 Oct 2:00 - EET 1930 Jun 21 3:00 Russia MSK/MSD 1991 Mar 31 2:00s 2:00 Russia EE%sT 1992 Jan 19 2:00s 3:00 Russia MSK/MSD 2011 Mar 27 2:00s 4:00 - MSK 2014 Oct 26 2:00s 3:00 - MSK 新增2014年10月26日之后执行GMT+3时区 二、 修改完成后需要执行脚本生成data文件,具体执行可以参考 KK之前的版本:FAQ05710 KK之后的版本:FAQ12532 三、关于俄罗斯时区的问题 2014年6月13日俄罗斯宣布,从2014年10月26日之后俄罗斯所有的时区都推后一小时,如莫斯科时区从GMT+4变成GMT3,Sakhalin时区从GMT+11变成GMT+10. 对于KK版本可以直接下载最新的tzdata直接使用脚本编译就行,如果是JB版本需要下载2013年版本,然后参考2014年最新版本中有关俄罗斯的修改。
如何修改时区data文件
最新推荐文章于 2023-02-25 10:57:00 发布