赞
踩
1.出现问题:
前两天,有个需求要把android默认的显示时间设置为洛杉矶时间,
本来是很简单的事情,修改下系统默认时区就可以了。我修改了以后,
在网上找到洛杉矶当地时间进行对比,居然少了一个小时。撒原因呢?
2.复现问题然后猜测
然后我又手动切换到其他两三个时区,和网上的时间进行对比,其他
时间是对的。当时我脑子里冒出的第一个想法就是代码有问题,也就是
显示洛杉矶时间的那段代码有问题。然后我找了两台机器,一台是同一
平台的,另一台是其他平台的,测试结果是同一平台有同样的现象,另外
的平台没有,更加让我坚定是平台代码有问题。
3.验证猜想
我当时想,相差一个小时,就是一个时区,可能是平台代码里面关于
洛杉矶的时区设置有问题,我就自己找找看,涉及到洛杉矶时间的文件也
不是特别多,java,cpp的都有,我随便看了下,都是些大代码,实在看不
下去,我就随便看了下文件头的注释,都是些IBM的大牛写的,也没有什么
修改的地方,既然没有修改,那说明不是这个问题,这路基本不通,就算
是通的,估计我也挖不同。
4.继续猜想
既然我知道了有其他时区的时间是准的,从其他时区来推算洛杉矶时区
的时间,应该可以知道问题在哪里。洛杉矶时间是GMT -8:00,凤凰城时间
是GMT -7:00,凤凰城的时间和网上是一样的,在MID上,凤凰城和洛杉矶的
时间相差了一个小时,按照这个现象来看,时间是对的啊,为什么和网上时间
有差异呢,结果我对比了一下,网上显示的凤凰城和洛杉矶的时间显示居然是
一样的,我擦,不会吧,难道这个所谓的世界时钟网有问题,我仔细看了下两个
时间,洛杉矶下面有个夏令时+1h,而凤凰城显示目前不是夏时制时间。
5.继续验证
我这种没见过“市面”的人,当然不知道什么是夏令时,不过谷歌知道。
夏时制(Daylight Saving Time:DST),又称“日光节约时制”
和“夏令时间”,是一种为节约能源而人为规定地方时间的制度,
在这一制度实行期间所采用的统一时间称为“夏令时间”。一般
在天亮早的夏季人为将时间提前一小时,可以使人早起早睡,
减少照明量,以充分利用光照资源,从而节约照明用电。各个
采纳夏时制的国家具体规定不同。
6.结论
看到这里,结论就很明显了,在网上显示的洛杉矶时间是夏令时
时间,而我手上这台机器的平台代码并没有对夏时令时间做优化,
另外那个平台,可能以前就发现过这个问题,针对夏时令做了
修改。
心得:
1.我的能力还远远不够,而android是一个牵一发动全身的系统,
所以我目前处理问题的方法就是:复现问题,猜测原因,验证
原因,查找解决方法。
2.就像这次这个问题,如果你完全没碰到过,可能不好下手,但是
如果我下次碰到了,就很快往这方面想,可能这就是经验。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。