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=new GregorianCalendar(2008,7,8);
Calendar c2=new GregorianCalendar(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)带参构造函数。。。。