如题,
有两个不同时区的Calendar对象,如何计算它们之间的时间差。 

解决方案 »

  1.   

    如何求两个不同时区的Calendar对象间的时间差啊?
      例如:
      Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
      Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("JST"));这两个cal1和cal2间的时间差如何计算啊?我使用如下的方法返回的是0。
    long dif = cal2.getTimeInMillis() - cal1.getTimeInMillis();
      

  2.   

    实在不好意思,你看这样可以吗
    imeZone tzg=TimeZone.getTimeZone("GMT");
            TimeZone tzgf=TimeZone.getDefault();//CST
            DateFormat dateFormatter = DateFormat.getDateTimeInstance(
             DateFormat.FULL,
             DateFormat.FULL,
             Locale.CHINA);
            DateFormat dateFormatterc = DateFormat.getDateTimeInstance(
             DateFormat.FULL,
             DateFormat.FULL,
             Locale.CHINA);
            Date curDate = new Date();
            dateFormatter.setTimeZone(tzg);
            dateFormatterc.setTimeZone(tzgf);
            System.out.println(tzgf.getRawOffset()-tzg.getRawOffset());
            
            System.out.println(dateFormatterc.format(curDate));
            System.out.println(dateFormatter.format(curDate));
      

  3.   

    晕:少了个T        TimeZone tzg=TimeZone.getTimeZone("GMT");
            TimeZone tzgf=TimeZone.getDefault();
            DateFormat dateFormatter = DateFormat.getDateTimeInstance(
             DateFormat.FULL,
             DateFormat.FULL,
             Locale.CHINA);
            DateFormat dateFormatterc = DateFormat.getDateTimeInstance(
             DateFormat.FULL,
             DateFormat.FULL,
             Locale.CHINA);
            Date curDate = new Date();
            dateFormatter.setTimeZone(tzg);
            dateFormatterc.setTimeZone(tzgf);
            System.out.println(tzgf.getRawOffset()-tzg.getRawOffset());
            
            System.out.println(dateFormatterc.format(curDate));
            System.out.println(dateFormatter.format(curDate));
      

  4.   

    我自己作了一个方法如下:
    long get_CalendarDif(Calendar cal){
    int cal_Y = 0;
    int cal_M = 0;
    int cal_D = 0;
    int cal_h = 0;
    int cal_m = 0;
    int cal_s = 0;

    TimeZone tz = TimeZone.getDefault();

    Calendar loc_cal = Calendar.getInstance();

    TimeZone.setDefault(cal.getTimeZone());
    cal_Y = cal.get(Calendar.YEAR);
    cal_M = cal.get(Calendar.MONTH);
    cal_D = cal.get(Calendar.DATE);
    cal_h = cal.get(Calendar.HOUR_OF_DAY);
    cal_m = cal.get(Calendar.MINUTE);
    cal_s = cal.get(Calendar.SECOND);

    TimeZone.setDefault(tz);

    Calendar tmp_cal = Calendar.getInstance();
    tmp_cal.set(cal_Y,cal_M,cal_D,cal_h,cal_m,cal_s);

    return tmp_cal.getTimeInMillis() - loc_cal.getTimeInMillis();
    }
      

  5.   

    long dif = cal2.getTimeInMillis() - cal1.getTimeInMillis();
    请问楼主 这个为什么等于0