import java.util.Calendar;public class Times{
public static void main(String[] args){
Calendar stop = Calendar.getInstance();
stop.set(99, 12, 29, 8, 40, 1);
Calendar start = Calendar.getInstance();
start.set(100, 1, 2, 12, 39, 44);

long time = start.getTimeInMillis() - stop.getTimeInMillis();
int hh = (int)(time/1000/60/60);
int minute = (int)(time - hh * 60 * 60 * 1000)/1000/60;
System.out.println("" + hh + ":" + minute);
}
}

解决方案 »

  1.   

    我是这么写的(oracle的数据库)
    public  String getHours(String p_startDate,String p_stopDate) throws Exception{
        //日期格式的转化
        p_startDate = p_startDate.trim();
        p_stopDate = p_stopDate.trim();
        int nYear0 = Integer.parseInt(genMethod.readValueStr(p_startDate,"-",0))+100;
        int nMonth0 = Integer.parseInt(genMethod.readValueStr(p_startDate,"-",1));
        String sDate  = genMethod.readValueStr(p_startDate,"-",2);
        String sDateStr  = genMethod.readValueStr(sDate," ",0);
        int nDay0 = Integer.parseInt(sDateStr);
        String hmsStr = genMethod.readValueStr(sDate," ",1);
        int nHour0 = Integer.parseInt(genMethod.readValueStr(hmsStr,":",0));
        int nMinute0 = Integer.parseInt(genMethod.readValueStr(hmsStr,":",1));
        SLDate startSLDate = new SLDate(nYear0,nMonth0,nDay0,nHour0,nMinute0);
        int nYear1 = Integer.parseInt(genMethod.readValueStr(p_stopDate,"-",0))+100;
        int nMonth1 = Integer.parseInt(genMethod.readValueStr(p_stopDate,"-",1));
        sDate  = genMethod.readValueStr(p_stopDate,"-",2);
        sDateStr  = genMethod.readValueStr(sDate," ",0);
        int nDay1 = Integer.parseInt(sDateStr);
        hmsStr = genMethod.readValueStr(sDate," ",1);
        int nHour1 = Integer.parseInt(genMethod.readValueStr(hmsStr,":",0));
        int nMinute1 = Integer.parseInt(genMethod.readValueStr(hmsStr,":",1));
        SLDate stopSLDate = new SLDate(nYear1,nMonth1,nDay1,nHour1,nMinute1);
        long totalMinutes = (stopSLDate.getTime()-startSLDate.getTime())*24*60/86400000;
        int nHours = (int)totalMinutes/60;
        int nMinutes =  (int)(totalMinutes - Long.parseLong(Integer.toString(nHours*60)));
        return Integer.toString(nHours) + ":"+Integer.toString(nMinutes);
      }
    但是,如果startdate:2004-10-22 8:51:26   stopdate:1999-10-22 8:51:19
    计算出来的结果是:-832752:0
    请各位帮忙看看
      

  2.   

    <--------------高手看过来! 能不能搞定这个?
    http://community.csdn.net/Expert/topic/3472/3472337.xml?temp=.2961847
      

  3.   

    只是为了求时间差的话,可以使用System类的方法
    但是这个startDate不在是日期了,而是一个长整数,stopDate也是。
    long startDate = System.getCurrentMillis();
    ////////do sth when run until stop
    long stopDate = System.getCurrentMillis();
    long rundate = stopDate - startDate;
    //rundate 是运行期的毫秒数
    //以下略
      

  4.   

    取相差天数.楼主,大致看了你写的,你应该把String的时间,转换为Timestamp的。
            C_DATE_FORMATTER.applyPattern(as_Pattern);
            return new Timestamp(C_DATE_FORMATTER.parse(as_DateString).getTime());
    然后
           long l_BeginDateTimeMillis = lTs_BeginDate.getTime();
           long l_EndDateTimeMillis = lTs_EndDate.getTime();
           long betweenDays = (long) ((l_EndDateTimeMillis -  l_BeginDateTimeMillis)/C_ONE_DAY);
           return String.valueOf(betweenDays);
        }
      

  5.   

    shengyh(阿辉) ,能针对我写的那段再说详细点么?谢谢了