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"); 就好了但是这是为什么呢?为什么每次都要设置时区呢?我查看了我的系统,时区确实是东八区啊。

解决方案 »

  1.   

    我用vs2008开发环境 和 javascript获取时间 都是正确的啊
      

  2.   

    要想解决这问题,你必须至少提供以下两样信息:1:java -version 显示的 java 版本
    2:操作系统版本
      

  3.   

    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 Pack3Ghost XP SP3 装机版YN16我也不知道怎么配置,请各位帮忙啦
      

  4.   

    “在 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);
      

  5.   

    是以前就有还是最近才出现?如果之前就有的话就是虚拟机问题了,重装一下jdk应该会好的。如果最近出现的,那么可能就是系统环境变量什么的遭到修改了之后导致了时区发生了改变。
      

  6.   


      是你的jdk版本问题,我也遇到过这样的情况。他的时间也是少8个小时。你改成Calendar看看
      

  7.   

    感觉你bios的设置可能出点问题
    建议去看看
      

  8.   


    我的电脑系统显示的时区 和 时间都是没有问题的。
    除了java开发环境获取的时间不对以外 其他的都对。
    这个问题貌似是最近才出现的。您能说说环境变量应该怎么样修改吗?
      

  9.   

    你装的是 XP SP3,你试试把 JDK 的版本升级到 JDK 5 最新的或者升级到最新的 JDK 6 版本试试看。原来也有人跟你有同样的问题,参考这个帖子:
    http://topic.csdn.net/u/20100507/14/c2c0ec6a-fc12-4ba6-ad2d-3c070c04266c.html
      

  10.   

    我的时间显示也不对,
    可以参考这个看一下:http://log-cd.javaeye.com/blog/368238
      

  11.   

    http://blog.csdn.net/xinew/archive/2009/11/26/4876937.aspx刚刚这篇文章里 说 在java虚拟机里面加上配置
    -Dfile.encoding=UTF8
    -Duser.timezone=GMT+08  
    这两句话怎样去配置呢?
      

  12.   

    这里有具体的解决方法:http://blog.163.com/flying_heart/blog/static/9811907620101542630261/
      

  13.   

    應該是時區的問題,我們的時間是GMT+8,而你取的時間是格林治時間。找找有沒有什麼類似C語言中GetLocalTime的函數。
      

  14.   

    我的机器也没有问题。
    如果你查看了“控制面板”-》“区域和语言选项”里面最下方显示的是中国,
    那么建议你去重新下载一个JDK吧。
      

  15.   

    1:Date类已经不建议被使用,现在对时间的操作应该通过Calendar类来实现
    2:如果LZ的jdk不支持windows系统,也不能正确显示
    3:windows注册表可能有问题
      

  16.   

    各位,我重装系统解决了这个问题。但我和同事一起分析了,应该是JVM的问题。不过刚刚给留下的答案都试过,貌似不好用
      

  17.   

    给你一个正确的
    int yyyy,mm,dd,hh,mi;     
    Calendar c=Calendar.getInstance();     
    yyyy=c.get(Calendar.YEAR);     
    mm=c.get(Calendar.MONTH) +1;     
    dd=c.get(Calendar.DAY_OF_MONTH); 
    hh=c.get(Calendar.HOUR_OF_DAY);
    mi=c.get(Calendar.MINUTE);
    String datetime = yyyy+"/"+mm+dd+"/"+hh+"/"+mi%10;
    //System.out.println("绯荤粺褰撳墠鏃堕棿锛�+datetime);
    return datetime;
      

  18.   

    JDK 版本问题,我之前有同事碰过此问题。