首页 > 杂记 > 要记得中国从1986年到1991年实行过夏令时啊

要记得中国从1986年到1991年实行过夏令时啊

2009年5月3日

这两天在给未名写把用户信息向AD同步的程序,其中生日的字段要把日期时间写成ISO标准的字符串表达,这里面要求必须有时区信息。

可是实际跑起来,发现成生的结果中时区竟然是+0900而不是+0800,可是把那段代码拷到一个单独的文件里执行就是+0800的。于是我以为肯定是环境的问题,于是把各种时区的变量设了一顿,format日期前也显式地强调时区是Asia/Shanghai,可是还是一样的结果。我甚至开始怀疑UTC是有夏令时的,可是不可能啊。。。

其实本来的代码和单独拷出来执行的代码差的不是环境变量,而是转换的值,前者用的是我的生日(86年6月),后者是随便输的一个日期。当我把前者的日期改成86年3月时,惊奇地发现时区变成+0800了!于是开始使用二分法,一天一天地试,最后锁定了,86年5月3号是+0800的,5月4号就是+0900了。可是就算是夏令时,起点怎么在5月呢。。。

最后还是在wiki上查到了中国施行夏令时的历史,发现由于86年是头一年施行,所以从5月4号开始的,后面的几年就都是从4月份开始到9月份结束了。佩服一下做日期库的人,写代码的同时还要搜集全世界各种使用夏令时的情况。。。。

哎哎,被这个事情郁闷了好久。不过也幸好是用生日试验的,否则还发现不了这个问题了。。。

杂记

  1. 2016年4月27日16:06 | #1

    我们为人和善,所以,大家喜欢和我们做生意。

  1. 目前还没有任何 trackbacks 和 pingbacks.