win7 系统下java 时间问题

问题:java程序将获取的系统时间比当前时间小20个小时,例如:当前时间为2010-04-0622:48,系统托盘时间显示也对,但java获取的当前时间却是2010-04... 问 题:java程序将获取的系统时间比当前时间小20个小时,例如:当前时间为2010-04-06 22:48,系统托盘时间显示也对,但java获取的当前时间却是2010-04-06 02:48。
操作系统:win7
系统时区:(UTC+08:00)北京,重庆,香港特别行政区,乌鲁木齐
jdk版本:1.5

重要说明:
(1)操作系统时区设置没问题
(2)CMOS时间正常
(3)java中获取当前日期的方法没有问题,linux下Solaris下都正确。
(4)我试了各种日期的输出方法,包括Date和Calendar,也尝试过时区的设置,但问题依旧,应该与java无关。
(5)系统托盘显示是对的,就是我用java输出时小了20小时,而且仅仅在我的电脑上是错误的。
jdk1.5我也重装过。
代码也像 hou_shaojun那样写过。而且我还试过:
DateFormat chinaFormatter=DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM,Locale.CHINA);
DateFormat defaultFormatter=DateFormat.getDateTimeInstance();
Date now=new Date();
DateFormat gmt08Formatter=DateFormat.getDateTimeInstance();
TimeZone timezone=TimeZone.getTimeZone( "GMT 08:00 ");
gmt08Formatter.setTimeZone(timezone); //格式日期/时间
String defaultDateTime=defaultFormatter.format(now);
String chinaDateTime=chinaFormatter.format(now);
String gmt08DateTime=gmt08Formatter.format(now);
System.out.print( defaultDateTime+" " +chinaDateTime+" "+ gmt08DateTime);

输出:2010-4-8 5:15:21 2010-4-8 5:15:21 2010-4-8 5:15:21
而当前时间是:2010-4-8 13:15:21 。竟然少8小时
展开
 我来答
百度网友4aca5ff
2010-04-09 · TA获得超过588个赞
知道小有建树答主
回答量:349
采纳率:0%
帮助的人:199万
展开全部
实际上,我们中国处于东八区,所以在我们电脑上得到的日期应该是滞后八小时;
其实这是JVM的默认TimeZone类有问题引起的

/*ForTest.java*/
import java.util.TimeZone;
import java.util.Date;
import java.text.DateFormat;

public class ForTest {

public static void main(String[] args) {

DateFormat dateFormatterChina = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);//格式化输出
TimeZone timeZoneChina = TimeZone.getTimeZone("Asia/Shanghai");//获取时区
dateFormatterChina.setTimeZone(timeZoneChina);//设置系统时区
Date curDate = new Date();//获取系统时间

System.out.println(dateFormatterChina.format(curDate));
}
}

参考资料: http://hi.baidu.com/jjpro/blog/item/2f807ca9a916c8f91e17a29f.html

智双qv
2022-09-17 · TA获得超过115个赞
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:126万
展开全部
我也用win7
我这代码可行。你试试
import java.text.SimpleDateFormat;

/**
* win7 java 系统时间
*
* @author H
*/
public class DateTest
{
public static void main(String[] args)
{
java.util.Date d = new java.util.Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 时间格式自己设置
System.out.println(sdf.format(d));
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-04-07
展开全部
获取时间的代码贴一下吧?
如何重现你的问题?请先描诉一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wubiao_1213
2010-04-08
知道答主
回答量:19
采纳率:0%
帮助的人:16.8万
展开全部
换个JDK试试看.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式