io per tutte le operazioni con le date uso questa classettina fatta da me...

codice:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.StringTokenizer;
import java.util.Calendar;
import java.util.TimeZone;



public class DateHelper{
	
	// DEFINISCO PROPRIETA'
	private static String format = "dd/MM/yyyy HH:mm:ss";
	private static String simpleFormat = "dd/MM/yyyy";
	private static String bakFormat = "yyyy/MM/dd HH:mm:ss";


	// CONVERSIONE FORMATO DATA --> STRINGA
	public String dateToString(Date date, String format) {
		SimpleDateFormat formatter = new SimpleDateFormat(format);
		return formatter.format(date);
	}

	// CONVERSIONE FORMATO STRINGA --> DATA
	public Date stringToDate(String date, String format) {
		SimpleDateFormat formatter = new SimpleDateFormat(format);
		Date dataConvertita = null;
		try {
			dataConvertita = formatter.parse(date);
		}
		catch (ParseException e) {
			System.out.println("ERRORE stringToDate");
		}
		return dataConvertita;
	}
		
	// FUNZIONE PER CONVERSIONE DELLA DATA ( non usata )
	public String usrToDbf(String dataUsr, String divisore){
		int i;
		StringTokenizer st = new StringTokenizer(dataUsr,divisore);
		String [] stringheSplittate = new String[st.countTokens()];
		i = 0;
		while (st.hasMoreTokens()) {
		  stringheSplittate[i] = st.nextToken();
			i++;
		}		
		if (stringheSplittate[0].length() == 1){
			stringheSplittate[0] = "0" + stringheSplittate[0];
		}	
		if (stringheSplittate[1].length() == 1){
			stringheSplittate[1] = "0" + stringheSplittate[1];
		}	
		String giorno = stringheSplittate[0];
		String mese = stringheSplittate[1];
		String anno = stringheSplittate[2];
		return anno+mese+giorno;			
	}
		
	// FUNZIONE PER LA CONVERSIONE DELLA DATA	
	public String formatDate(String date, String from, String to) { 
		try{
			SimpleDateFormat sdf = new SimpleDateFormat(from); 
			Date d = sdf.parse(date); 
			sdf = new SimpleDateFormat(to); 
			return sdf.format(d); 
		}catch(Exception e){
			return "";
		}
	} 
	
	// FUNZIONE PER CALCOLO DIFFERENZA TRA DUE DATE
	public int giorniDifferenza(String sdate1, String sdate2, String fmt, TimeZone tz){
		SimpleDateFormat df = new SimpleDateFormat(fmt);
		Date date1  = null;
		Date date2  = null;
		try {
			date1 = df.parse(sdate1); 
			date2 = df.parse(sdate2); 
		}catch (ParseException pe){
			pe.printStackTrace();
		}
		Calendar cal1 = null; 
		Calendar cal2 = null;
		if (tz == null){
			cal1=Calendar.getInstance(); 
			cal2=Calendar.getInstance(); 
		}else{
			cal1=Calendar.getInstance(tz); 
			cal2=Calendar.getInstance(tz); 
		}
		// different date might have different offset
		cal1.setTime(date1);          
		long ldate1 = date1.getTime() + cal1.get(Calendar.ZONE_OFFSET) + cal1.get(Calendar.DST_OFFSET);
		cal2.setTime(date2);
		long ldate2 = date2.getTime() + cal2.get(Calendar.ZONE_OFFSET) + cal2.get(Calendar.DST_OFFSET);
		// Use integer calculation, truncate the decimals
		int hr1   = (int)(ldate1/3600000); //60*60*1000
		int hr2   = (int)(ldate2/3600000);
		int days1 = (int)hr1/24;
		int days2 = (int)hr2/24;
		int dateDiff  = days2 - days1;
		int weekOffset = (cal2.get(Calendar.DAY_OF_WEEK) - cal1.get(Calendar.DAY_OF_WEEK))<0 ? 1 : 0;
		int weekDiff  = dateDiff/7 + weekOffset; 
		int yearDiff  = cal2.get(Calendar.YEAR) - cal1.get(Calendar.YEAR); 
		int monthDiff = yearDiff * 12 + cal2.get(Calendar.MONTH) - cal1.get(Calendar.MONTH);

		// RITORNA DIFFERENZA DATE
		return dateDiff;
	}
	


	// FUNZIONE PER AGGIUNGERE / TOGLIERE DEI GIORNI AD UNA DATA 
	public String addDay(String date,int dayToAdd){
		
		String dataNew = "";
		String DATE_FORMAT = "yyyyMMdd";
		SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
		try{
			Calendar c1 = Calendar.getInstance(); 
			int anno = Integer.parseInt(date.substring(0,4));
			int mese = Integer.parseInt(date.substring(4,6))-1;
			int giorno = Integer.parseInt(date.substring(6,8));
			c1.set(anno, mese, giorno);
			c1.add(Calendar.DATE,dayToAdd);
			dataNew = sdf.format(c1.getTime());
		}catch (Exception e){
			e.printStackTrace();
		}
		// RITORNA DIFFERENZA DATE
		return dataNew;
	}

		
}