java 获取当前时间不正确

gaohongtao_2005 2010-08-03 10:03:25

java.util.Date now = new java.util.Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = df.format(now);
System.out.println(dateStr);


通过这种方式获取的时间整整比我桌面显示的时间晚了8个小时

我查了说是系统时区不对,加上

System.setProperty("user.timezone","GMT+8");

就好了

但是这是为什么呢?为什么每次都要设置时区呢?我查看了我的系统,时区确实是东八区啊。
...全文
1571 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
ganchunsaixx 2010-08-03
  • 打赏
  • 举报
回复
可能和电脑系统时间有问题吧
该一下系统时间咯
gaohongtao_2005 2010-08-03
  • 打赏
  • 举报
回复
http://blog.csdn.net/xinew/archive/2009/11/26/4876937.aspx

刚刚这篇文章里 说 在java虚拟机里面加上配置
-Dfile.encoding=UTF8
-Duser.timezone=GMT+08
这两句话怎样去配置呢?
DAVE_LUO 2010-08-03
  • 打赏
  • 举报
回复
楼主人品问题了。
dahaidao 2010-08-03
  • 打赏
  • 举报
回复
我的时间显示也不对,
可以参考这个看一下:http://log-cd.javaeye.com/blog/368238
  • 打赏
  • 举报
回复
你装的是 XP SP3,你试试把 JDK 的版本升级到 JDK 5 最新的或者升级到最新的 JDK 6 版本试试看。

原来也有人跟你有同样的问题,参考这个帖子:
http://topic.csdn.net/u/20100507/14/c2c0ec6a-fc12-4ba6-ad2d-3c070c04266c.html
gaohongtao_2005 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hardycheng 的回复:]
是以前就有还是最近才出现?

如果之前就有的话就是虚拟机问题了,重装一下jdk应该会好的。

如果最近出现的,那么可能就是系统环境变量什么的遭到修改了之后导致了时区发生了改变。
[/Quote]

我的电脑系统显示的时区 和 时间都是没有问题的。
除了java开发环境获取的时间不对以外 其他的都对。
这个问题貌似是最近才出现的。您能说说环境变量应该怎么样修改吗?
gaohongtao_2005 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 joy_liut 的回复:]
“在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。”——试试:
Calendar calend……
[/Quote]

试过了,还是差8个小时
fuerxi 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gaohongtao_2005 的回复:]
引用 2 楼 sky123123 的回复:
在我机器上没有一点问题哦 肯定是你的电脑的设置问题吧

我用vs2008开发环境 和 javascript获取时间 都是正确的啊
[/Quote]
我的都是正确的啊
fenshen6046 2010-08-03
  • 打赏
  • 举报
回复
感觉你bios的设置可能出点问题
建议去看看
跟着Mic学架构 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 joy_liut 的回复:]
“在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。”——试试:
Calendar calend……
[/Quote]

是你的jdk版本问题,我也遇到过这样的情况。他的时间也是少8个小时。你改成Calendar看看
winkey4986 2010-08-03
  • 打赏
  • 举报
回复
应该是本机时间的问题!
  • 打赏
  • 举报
回复
我想也是你系统的问题,拿别人那里运行一下,应该时间是正确的
hardycheng 2010-08-03
  • 打赏
  • 举报
回复
是以前就有还是最近才出现?

如果之前就有的话就是虚拟机问题了,重装一下jdk应该会好的。

如果最近出现的,那么可能就是系统环境变量什么的遭到修改了之后导致了时区发生了改变。
joy_liut 2010-08-03
  • 打赏
  • 举报
回复
“在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。”——试试:
Calendar calendar = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = df.format(calendar.getTime());
System.out.println(dateStr);
pubaolin 2010-08-03
  • 打赏
  • 举报
回复
关注一下
gaohongtao_2005 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tassdars 的回复:]
没悬念了,肯定是楼主的系统设置有问题,不然你把代码放别人电脑上试,我电脑上是一点问题没有
[/Quote]
您说的没错,别人的都没问题。
gaohongtao_2005 2010-08-03
  • 打赏
  • 举报
回复
java version "1.5.0_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_04-b05)
Java HotSpot(TM) Client VM (build 1.5.0_04-b05, mixed mode, sharing)

操作系统:
Microsoft Windows XP
Professional 版本2002 Service Pack3

Ghost XP SP3 装机版YN16

我也不知道怎么配置,请各位帮忙啦
染指黄昏 2010-08-03
  • 打赏
  • 举报
回复
我的电脑上显示也没问题
  • 打赏
  • 举报
回复
要想解决这问题,你必须至少提供以下两样信息:

1:java -version 显示的 java 版本
2:操作系统版本
Tassdars 2010-08-03
  • 打赏
  • 举报
回复
没悬念了,肯定是楼主的系统设置有问题,不然你把代码放别人电脑上试,我电脑上是一点问题没有
加载更多回复(18)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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