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小时 展开
操作系统: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小时 展开
4个回答
展开全部
实际上,我们中国处于东八区,所以在我们电脑上得到的日期应该是滞后八小时;
其实这是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));
}
}
其实这是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
展开全部
我也用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));
}
}
我这代码可行。你试试
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
展开全部
获取时间的代码贴一下吧?
如何重现你的问题?请先描诉一下。
如何重现你的问题?请先描诉一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询