白天不懂夜的黑–java中时区的问题 – kiwi

今天早上,项目站会,在澳大利亚的客户说,我们应该在提交代码之前在本地跑测试。

我心里觉得委屈啊,我提交代码的时候的确都是跑了测试的啊。

多争无益,于是,我又去看看代码到底是不是有什么问题。

在我的DA(Desktop Anywhere)中,我使用和CI上相同的命令又跑了一次,还是OK的。

在这里被卡住了一下,于是找澳大利亚的客户帮忙看看是不是CI上的配置发生了变化。

客户说CI是OK的,他把代码update到他的DA上跑,也是挂的。

我又找另外一个在成都的同事,用他的DA跑一次,也是OK的。

奇怪。。。

NND,难道是RP有被虐了。

后来想到代码中有一段逻辑是和时间相关的,难道是因为成都和澳大利亚的时差造成的?

试试看,把DA的时区改成了澳大利亚时区(UTC+10)。

嘿嘿,还真的出现问题了。

我们使用的数据库是18摸的数据库,在创建一个新的record的时候,使用的是“CURRENT TIMESTAMP”

这个时候,“CURRENT TIMESTAMP”是不包含时区信息的。

于是,查阅了文档以后,我们把SQL改成了“CURRENT TIMESTAMP WITH TIME ZONE”。(CURRENT TIMESTAMP文档)

满心欢喜的认为应该可以解决这个问题了。

但是,又挂了。

日本人。

终于,也就是finally,我们找到了这个文档(CURRENT TIMESTAMP WITH TIME ZONE之于Java)

原来在创建表的时候,column的数据类型应该设置成CURRENT TIMESTAMP WITH TIME ZONE。

而且,在读取,更新这个column的时候,应该使用的是com.ibm.db2.jcc.DBTimestamp。

人艰不拆啊

每年的情人节圣诞节除夕,也和他共度。甚至连吵架也是重复的,

白天不懂夜的黑–java中时区的问题 – kiwi

相关文章:

你感兴趣的文章:

标签云: