android夏时令问题

来源:互联网 发布:数据处理软件pen 编辑:程序博客网 时间:2024/04/30 22:50

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.就像这次这个问题,如果你完全没碰到过,可能不好下手,但是

如果我下次碰到了,就很快往这方面想,可能这就是经验。



原创粉丝点击