java时间去哪了?

goodlucktomyself 2014-04-17 07:15:47
问题如下:
在测试时遇到奇葩问题, 在window7安装了tomcat7, 里面部署了一个项目, 其中项目中有如下代码:
TbSMSCode smsCode = new TbSMSCode();
smsCode.setAuthCode(authCode);
smsCode.setCodeStatus(0);
Timestamp now = new Timestamp(System.currentTimeMillis());
smsCode.setCreateTime(now);

......
business.save(smsCode); //此处是调用远程服务接口, 将数据保存

business部署的操作系统是Linux, 诡异的问题出现了, 数据保存成功后, 查看数据库记录时, 发现数据库数据与操作系统的时间相差13个小时.
(1) tomcat中打印一个时间=> 当前时间: Thu Apr 17 19:06:32 CST 2014,
(2) 部署服务接口business的的linux系统中, 我也打印一个时间=> 当前时间: Thu Apr 17 19:06:32 PDT 2014
(3)数据库时间则是: 2014-04-17 04:06:32

在网上试了好几种方法无果, 所以特来此求助!!!
...全文
347 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodlucktomyself 2014-04-18
  • 打赏
  • 举报
回复
问题解决了, 我在启动linux远程接口调用服务时, 在代码第一行加上这句代码:
 System.setProperty("user.timezone","Asia/Shanghai");
, //与OS时区一致 结果神奇的好了. 虽然问题解决了. 但是想知道, 有没有更好的解决办法!!!
goodlucktomyself 2014-04-18
  • 打赏
  • 举报
回复
谢谢各位的回复. 根据大家的说法, 把linux的时区改正了, 如: root@ubuntu:~# date Fri Apr 18 10:34:53 CST 2014 以下是tomcat控制输出: Fri Apr 18 10:35:00 CST 2014 以上二者时间, 及时区一致. 但是linux接口服务输出的还是PDT, 如下: now: Thu Apr 17 19:35:03 PDT 2014 所以非常费解, 为什么java代码里输出的时间与本机(linux)系统时间不一致. 网上说到跟什么jvm时区有关, 是否如此?
tony4geek 2014-04-18
  • 打赏
  • 举报
回复
嗯系统的时间问题。
  • 打赏
  • 举报
回复
时区的问题吧
湘水友独 2014-04-18
  • 打赏
  • 举报
回复
又长知识了。
scott_129 2014-04-17
  • 打赏
  • 举报
回复
版主已给出标准答案。这个问题确实在最开始我接触的时候也觉得有点奇怪。
小灯光环 2014-04-17
  • 打赏
  • 举报
回复
没错,就是楼上说的时区问题导致的。
teemai 2014-04-17
  • 打赏
  • 举报
回复
CST -6:00 (美国)中部标准时间 PDT -7:00 (美国)太平洋夏令时
teemai 2014-04-17
  • 打赏
  • 举报
回复
时区问题啊: CST 和 PDT

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧