好久没写了,这次是安卓的时区导致仪器在倒计时的时间不一致的问题。一般都是有什么问题先存个草稿,日后看心情时间再加工,如果不对,真是对不住了。 顺带也想问一下,大家有多少是全栈攻城狮,不管什么c++/android/c#都要做的?是必须的经历不
1、发现问题
以下是原本的代码:
Date curDate = new Date(count2 * 1000);// 获取当前倒数时间
SimpleDateFormat formatter = new SimpleDateFormat("mm:ss");
formatter.setTimeZone(timeZoneChina);//设置系统时区
String time = formatter.format(curDate);//倒计时
原来如果SimpleDateFormat按照普通用法,上面应该是会有问题的,但恰巧只用到分钟,所以直接用起来没啥大问题。
谈到为什么会发现这个问题,是仪器在出到国外,例如印度时,不会操作的阿三们就喜欢在日期时区上较劲,总是要把这个时区给换到他们那的地方。中国刚好8小时,其他可不一定是整数啊。呃
如果加上yy,则有8小时差距 yy::mm:ss 实际为08:00:00
会按照 英国首都伦敦格林尼治天文台原址的那一条经线定为0°经线,而中国是东八区,属于GMT+8:00,所以有了8小时偏差。额哼~谈远了。
(但格林尼治时间是GMT+1:00,卡萨布兰卡和亚述尔群岛才是GMT+0:00??)
2、解决(伪)
而要解决问题也是比较简单,设定就匹配中国时区或GMT+0:00的时区。反正用不到小时
// 在设置不同时区下匹配时间
TimeZone timeZoneChina = TimeZone.getTimeZone("Asia/Shanghai");//获取时区 这句加上,很关键。
3、其他参考
考虑到以后可能会用到相关的时区,先不想那么多,记录下来准没错儿。
而是否下面都有,是否只有这么多,都没有考证
<timezones>
<timezone id="Pacific/Midway">中途岛</timezone>