您的位置:首页 > 编程语言 > Go语言

django一个匪夷所思的bug: 消失的时间?

2012-06-06 10:26 176 查看
今天同事告知, 在django中datetime.fromtimestamp(0)的时候, 竟然转成了 (1970,1,1,7,0)! 而不是(1970,1,1,8,0).

经测试发现:

1. 在开发机上正常, 在生产机上才有这个问题

2. python shell 中正常, manage.py shell 中出现问题

怀疑django初始化时候对datetime动过手脚, 搜了一遍代码也没看出个所以然来. 测着测着, 突然发现, 执行

datetime.datetime.fromtimestamp(time.time())


正常! 尝试了一系列不同的时间戳, 找到了一个G点



中间这一个小时哪去了? 回头看, python shell中的数据正常.

估计time模块中的time.localtime也有这样的问题, 试验一下



嗯, 果然. 但是这消失的时间哪去了?

再试验一下time.mktime转下这时间



Overflow! 我勒个擦.......

现在只能估计是 django 与 环境之间的冲突, 但还不能完全定位bug.

暂时要求大家使用utcfromtimestamp再加8自己转了.

========================================

后补:

找到一个http://stackoverflow.com/questions/6841333/why-is-subtracting-these-two-times-in-1927-giving-a-strange-result

里面描述了正好在某个时间点处时区有更改导致1小时之差的问题.

我擦django还有这么nb的功能, 赶紧google进行脑补, 我们设置的TIME_ZONE为 Asia/chongqing

最后发现



时间吻合, 眼泪哗哗的啊.....

想看时区状况, 可去 http://www.timeanddate.com/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: