wen742538485 发表于 2013-2-3 11:31:48

JAVA 计算任意两个日期之间的天数....

public static int dispersionDay(String strDate1, String strDate2) {
int iDay = 0;//记录相差的天数   
try {
   int index1,index2;
   index1=strDate1.indexOf('-');
   index2=strDate1.lastIndexOf('-');
   int nYear, nMonth, nDay;
   nYear = Integer.parseInt(strDate1.substring(0, index1));
   nMonth = Integer.parseInt(strDate1.substring(index1+1, index2));
   nDay = Integer.parseInt(strDate1.substring(index2+1));
   Calendar objCalendarDate1 = Calendar.getInstance();//此函数new   GregorianCalendar()   
   objCalendarDate1.set(nYear, nMonth, nDay);
            
   index1=strDate2.indexOf('-');
   index2=strDate2.lastIndexOf('-');
   
   nYear = Integer.parseInt(strDate2.substring(0, index1));
   nMonth = Integer.parseInt(strDate2.substring(index1+1, index2));
   nDay = Integer.parseInt(strDate2.substring(index2+1));
   Calendar objCalendarDate2 = Calendar.getInstance();
   objCalendarDate2.set(nYear, nMonth, nDay);

   if (objCalendarDate2.equals(objCalendarDate1))
    return 0;

   if (objCalendarDate2.after(objCalendarDate1))//如果strDate2>strDate1   
   {
    while (!objCalendarDate2.equals(objCalendarDate1)) {
   objCalendarDate1.add(objCalendarDate1.DATE, 1);
   iDay++;
    }
    iDay = -iDay;// 负号代表 还相距几天,正号代表已过去几天。。。
   } else//如果strDate1>strDate2   
   {
    while (!objCalendarDate2.equals(objCalendarDate1)) {
   objCalendarDate2.add(objCalendarDate2.DATE, 1);
   iDay++;
    }
   }
} catch (Exception e) {
}
return iDay;
}



/////////////////////////////使用简单的方法二///////////////////////

Calendar c1=newGregorianCalendar(2008,7,8);
Calendar c2=newGregorianCalendar(2008,1,2);
System.out.println(">>>>>>>>>>>>>>>>==="+(c1.getTimeInMillis()-c2.getTimeInMillis())/(1000*60*60*24));

////////////注意点////////////

》》》》》月份是0-11

》》》》》new GregorianCalendar()参数为空代表系统所在时间。。。

如果换为 new Date()且参数为空,那么计算出来结果为错误的。。。。。

改正方案是:new Date(int ,int ,int)带参构造函数。。。。
页: [1]
查看完整版本: JAVA 计算任意两个日期之间的天数....