今天遇到了一个比较有意思的问题, 从服务器上封装好的 java.sql.timestamp 对象返回到本地客户端程序后与数据库中的时间相差了整整 14 个小时. 因为跟客户的时差是 14 个小时, 所以大体怀疑是时差问题.
所以计划在客户端程序执行之前首先设置默认的 TimeZone:
Java 代码
1. timezone,TimeZone.setDefault(TimeZone);
但是我服务器上的 TimeZone 是什么呢? 于是我写了个程序来看看服务器的默认 TimeZone:
Java 代码
假设输出是: kk,
这样我就获得了服务器上的默认 TimeZone:kk, 然后所需要做的就是把在客户端程序执行前设置客户端程序的 TimeZone:
Java 代码
1. timezone,TimeZone.setDefault(TimeZone.getTimeZone("kk"));
然后取得的时间如果打印出来就跟服务器一致了, 当然你要是如果还是按照 java.sql.TimeStamp 的类型返回服务器的话, 时间还是原来的时间.
另外如果远程服务器封装对象的时候如果直接使用 String, 我想就不会有这种问题了.
来源: http://www.jianshu.com/p/ad0c3c9b212e