采用Calendar类和Date类都无法得到正确的时间,比如当前机器时间为2008-03-11 13:35:30,但是当用Java获取并输出时间得到的却是:2008-03-11 05:32:40

解决方案 »

  1.   

    我采用的环境是eclipse3.2,JDK.1.6_02,效果的确是这样的, 我很郁闷:(
      

  2.   

    代码:
    System.out.println(new Date(System.currentTimeMillis()).toString());
    System.out.println(new java.sql.Timestamp(new Date().getTime()));
    结果(刚执行的,右下角显示13:56):
     Mar 11 05:56:04 GMT 2008
    2008-03-11 05:56:04.421
      

  3.   

    这个问题,在这里也出现过好多次,但是具体的原因尚不清楚,可能与安装有关。用下面这个程序测试一下,如果 timezone 为空,说明使用系统默认的时区:public class Test {
        public static void main(String[] args) {
            String timezone = System.getProperty("user.timezone");
            System.out.println("timezone=" + timezone);
        }
    }
      

  4.   

    我这里显示timezone=GMT,这应该是标准时间
      

  5.   

    我通过Access数据库的now函数得到的就是正确的,只有Java环境得不到正确值,用.NET也是正确的
      

  6.   

    机器时区设置问题
    你双击右下角时间,把时区改成GMT+8
      

  7.   

    采用CST时间相差一个小时,没有那么大
      

  8.   

    这个行不
      public static String getNow()
      {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String strMonth = "";
        try
        {
          strMonth = sdf.format(new Date());
        }
        catch (Exception ex)
        {
          ex.printStackTrace();
        }
        finally
        {
          sdf = null;
        }
        return strMonth.trim();
      }
    输出:2008-03-11 14:12:01
      

  9.   


    出来的 GMT 是标准时间,而不是中国的东8区(GMT+0800)时间或者空,正常情况下应该是空的。而且这个系统参数是在安装时产生的,也没有办法更改(不知道是从哪里获得的),估计与你的 JDK 安装有关。
      

  10.   

         int standardGMT = 8;  // for China
            String[] ids = TimeZone.getAvailableIDs(standardGMT * 60 * 60 * 1000);
            SimpleTimeZone pdt = new SimpleTimeZone(standardGMT * 60 * 60 * 1000, ids[0]);
            Calendar date = new GregorianCalendar(pdt);
            java.util.Date trialTime = new java.util.Date();
            date.setTime(trialTime);
            System.out.println(date.getTime());
    这样试一下
            
      

  11.   

    没用的,要不你每次执行前比较麻烦地在最前面加一行代码:System.setProperty("user.timezone", "");
      

  12.   

    方法都用了,问题还存在,我重新安装一个JDK最新版本呢看看
      

  13.   

    就是时区问题呀,正好差8个小时。我做J2ME的,在电脑上取到的时间就是差8个小时,但是在手机上是正常的。
      

  14.   

    会不会是包引入的错了哦!!
    java.util 这个包应该没有问题!
      

  15.   

    时区问题
    楼主用toLocaleString()测试一下
      

  16.   

    多谢个位帮助,问题已经解决,的确是时区问题,在我的机器上环境参数user.timezone=GMT,在程序中我设置其值为Asia/Shanghai即可正确显示时间了
      

  17.   

    我第一次用的时候也对这个问题很困惑,后来仔细的看看书本,这个是GMT时间。我们在+8区,所应该加8。
      

  18.   

    hog hog hog hog hog hog hog hog hog hog hog hog hog hog hog hog hog hog hog hog