This is what I have tried .Though isValid() is giving proper result but datediff is not .Please help me out.
Thanks in adv.
Sandeep
import java.util.*;
class DateUtility
{
private
String date;
private int year,month,day;
private boolean valid;
public DateUtility(String date)
{
this.date=date;
int day=Integer.parseInt(date.substring(0,date.indexOf('/')));
date=date.substring(date.indexOf('/')+1);
int month=Integer.parseInt(date.substring(0,date.indexOf('/')));
int year=Integer.parseInt(date.substring(date.indexOf('/')+1));
if(valid=isValid(day,month,year))
{
this.day=day;
this.month=month;
this.year=year;
}
else
{
this.day=0;
this.month=0;
this.year=0;
}
}
//Checks the validitiy of date
public boolean isValid(int day,int month,int year)
{
GregorianCalendar obj=new GregorianCalendar(year,(month-1),1);
if(((month<=obj.getActualMaximum(Calendar.MONTH)) && (month>=obj.getActualMinimum(Calendar.MONTH))) && ((day<=obj.getActualMaximum(Calendar.DATE)) && (day>=obj.getActualMinimum(Calendar.DATE) )))
return true;
else
return false;
}
//calculates the difference of 2 dates in days
public static int dateDiff(GregorianCalendar st,GregorianCalendar en)
{
/* Just for
testing GregorianCalendar st=new GregorianCalendar(2002,4,12);
GregorianCalendar en=new GregorianCalendar(2002,5,12);
*/
int count=0;
while(st.before(en))
{
count++;
st.roll(Calendar.DATE,1);
if (st.get(Calendar.DATE)==st.getActualMaximum(Calendar.DATE))
{
st.roll(Calendar.MONTH,1);
st.set(st.get(Calendar.YEAR),st.get(Calendar.MONTH),st.getActualMinimum(Calendar.DATE));
}
if (st.get(Calendar.MONTH)==st.getActualMaximum(Calendar.MONTH))
{
st.roll(Calendar.YEAR,1);
st.set(st.get(Calendar.YEAR),st.getActualMinimum(Calendar.MONTH),st.getActualMinimum(Calendar.DATE));
}
st.set(st.get(Calendar.YEAR),st.get(Calendar.MONTH),st.get(Calendar.DATE));
}
System.out.println("count is \n"+count); //Not giving proper result
return count;
}
}
[ April 21, 2002: Message edited by: Sonu Ghosh ]