本帖最后由 marszhc 于 2010-12-02 12:03:12 编辑

解决方案 »

  1.   

    默认时区对Date对象没有影响。这个就看日志打印的时候是怎么打印的了,直接打Date则你的努力是白费的。得从日志那边的配置下手。
      

  2.   


    TimeZone china = TimeZone.getTimeZone("GMT+08:00");
    Calendar cal = Calendar.getInstance(china);
    System.out.println("北京时间 " + cal.get(Calendar.YEAR) + "-"
    + (cal.get(Calendar.MONTH) + 1) + "-"
    + cal.get(Calendar.DAY_OF_MONTH) + " " + Calendar.HOUR_OF_DAY
    + ":" + Calendar.MINUTE + ":" + cal.get(Calendar.SECOND));
    为什么不用date,用区偏移量来算时间?
      

  3.   

    这个是我取出当前时间的方法,看看有问题吗?    Calendar calendar = Calendar.getInstance();
        String NowYear = Integer.toString(calendar.get(Calendar.YEAR));
        String NowMonth = Integer.toString( (calendar.get(Calendar.MONTH) + 1));
        String NowDay = Integer.toString(calendar.get(Calendar.DAY_OF_MONTH));
        String NowHour = Integer.toString(calendar.get(Calendar.HOUR_OF_DAY));
        String NowMinute = Integer.toString(calendar.get(Calendar.MINUTE));
        String NowDate = NowYear + "-" +
            (NowMonth.length() == 1 ? "0" + NowMonth : NowMonth) + "-" +
            (NowDay.length() == 1 ? "0" + NowDay : NowDay) + " " +
            (NowHour.length() == 1 ? "0" + NowHour : NowHour) + ":" +
            (NowMinute.length() == 1 ? "0" + NowMinute : NowMinute);
        return NowDate;
      

  4.   

    你这个代码对TimeZone.setDefault是敏感的,是不是可以注意这几点:
    1. 将调整TimeZone的代码直接加到这边
    2. 你说的早8个小时是什么意思,是不是要改成GMT/GMT-8等?试试看?
      

  5.   

    如果是 jdk 1.5 的话,那用 java -version 看一下 java 的版本号,根据 Sun 提供的资料,对应于 Windows 系统,JDK 1.5 最小的版本号:Windows 7, Windows 2008 R2, Windows Vista SP2, Windows 2008 SP2 需要 1.5.0_21 及以后版本
    Windows 2008 需要 1.5.0_19 及以后版本
    Windows Vista 需要 1.5.0_14 及以后版本JDK 1.6 系统支持最小的版本号Windows 7 需要 1.6.0_14 及以后版本
    Windows Server 2008 R2 需要 1.6.0_16 及以后版本你检查一下 JDK 的版本,JDK 5 的输出结果必须是大于等于 1.5.0_21 的。如果不是的话,重新安装最新版本的 JDK
      

  6.   

    楼主你走运了,我也遇到过这种问题,网上查过没有什么好的答案,后来发现是自己修改过电脑的时间的那个时间分隔符 我该成了“是SB”然后和同学聊天,就会显示 
    xxx 是SB+当前时间(正常情况是xxx +时间)
    +聊天内容当时纯属恶搞后来把那个该了就好了lz试一试把
      

  7.   

    static void getTime(){
     TimeZone tz = TimeZone.getDefault();
     Calendar cal = Calendar.getInstance(tz,Locale.CHINA);
     int year = cal.get(Calendar.YEAR);
     int month = cal.get(Calendar.MONTH);
     int date = cal.get(Calendar.DAY_OF_MONTH);
     int week = cal.get(Calendar.DAY_OF_WEEK_IN_MONTH);
     int weekday = cal.get(Calendar.DAY_OF_WEEK);
     int hour = cal.get(Calendar.HOUR_OF_DAY);
     int minute = cal.get(Calendar.MINUTE);
     int second = cal.get(Calendar.SECOND);
     String nowTime = year+"年"+(month+1)+"月"+(date)+"日"+"第"+week+"个星期"+"周"+(weekday-1)+" 时间:"+hour+"-"+minute+"-"+second;
     System.out.println(nowTime);
    }
    楼主试验下?
      

  8.   

    不用default的解决
    中国北京的GMT应该是
    TimeZone tz = TimeZone.getTimeZone("GMT+8");
    Calendar cal = Calendar.getInstance(tz,Locale.CHINA);