首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

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

2012-06-28 
JAVA 计算任意两个日期之间的天数....public static int dispersionDay(String strDate1, String strDate2

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)带参构造函数。。。。

热点排行