import java.util.*;public class T
{
public static void main(String arg[])
{
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
String TimeInfo = "现在时间是 ";
TimeInfo += cal.get(Calendar.YEAR) + "年";
TimeInfo += (cal.get(Calendar.MONTH) + 1) + "月";
TimeInfo += cal.get(Calendar.DATE) + "日,";
TimeInfo += (cal.get(Calendar.HOUR_OF_DAY)) + ": ";
TimeInfo += cal.get(Calendar.MINUTE) + ": ";
TimeInfo += cal.get(Calendar.SECOND)  ;

System.out.println(TimeInfo); }
}
这段码显示出来的时间是
“现在时间是 2008年1月26日,13: 51: 0”
但是我现在是时间是21:51
不知道是为什么,搜索论坛也没有相关内容。
http://topic.csdn.net/u/20071223/23/6b786258-7534-4994-94f6-2ef6f215090e.html
就连这个帖子的代码也是同样的效果,这是为什么??有高手能告诉我吗?

解决方案 »

  1.   

    这样设置:
    Calendar cal = Calendar.getInstance(Locale.CHINA);
      

  2.   

    复制你的代码,我自己运行与我的本地时间符合....
    所以请仔细参考这句话使用默认时区语言环境获得一个日历。返回的 Calendar 基于当前时间,使用了默认时区和默认语言环境。
      

  3.   

    加入cal.setTimeZone(TimeZone.getTimeZone("GMT+8"));后问题得到解决了。
    但是我还是不理解。我查看了系统,时区是GMT+8,控制面板里面的语言环境也都是中国,怎么会出现这个问题,反应的应该是系统的时区是GMT+0时区吧?而且我发现我卡巴的更新时间也是错误的,有同样的问题
    请问有人知道吗?能否帮我解决
      

  4.   

    这个问题,我在这里碰到有很多的人提到过,但是我没有碰到过,目前还不知道造成这种现象的具体原因。估计产生这种情况的原因在操作系统上。可以试试使用
    System.out.println(System.getProperty("user.timezone"));
    来输出的用户时区,看看是否是空值,一般来说应该为空的。再者重新安装JDK试试看。
      

  5.   

    给你提供以下 几种方法:都可以用的
      1、 System.out.println(String.format("%tr",new Date()));
      2、 Calendar c = Calendar.getInstance(); 
             System.out.println("calendar---->"+c.getTime()); 
      3、SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy  HH:mm:ss E");
           System.out.println(sdf.format(new Date())); 
    其实calendar最不好用了,你研究一下第三种吧,很实用的啊
      

  6.   

    注册表对应项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones 
    解决之道: 
    1.备份Time Zones这一项 
    2.从正常的并且是相同系统的机器中导出该项,然后倒入到自己机器中