不知道其它的人有没有遇到,我以前是没有注意的,这次产品升级中提到这个问题。我们原来向数据库插入日期的时候,使用的是PreparedStatement,插入日期参数的时候一般是使用的setDate(int parameterIndex, Date x),不知道有没有注意到还有一个同名的方法:setDate(int parameterIndex, Date x, Calendar cal),多了一个Calendar参数,要说清楚这个问题,还需要从Date类说起,这个类的底层实现是用一个long值存储一个毫秒数,它是相对GMT时间的1970年1月1日的,所以从原意上讲,Date是没有时区的,但是我们在使用Date的时候经常使用的字符串的形式,这样Date在被格式化为字符串的时候才涉及到时区的概念。那个三个参数的格式的最后一个参数就是指定了存储到数据库的时候需要使用的时区,不指定的时候使用系统的当前时区。

(Visited 19 times, 1 visits today)