Ajuda com Calendar

Fala ae galera

Estou trabalhando em um sistema e ele trabalha com o formato yyyyMM (ex: 201006)

Preciso fazer um método que me dê a diferença de meses entre dois períodos, por exemplo 201008 e 201006

como posso fazer para calcular essa diferença? tentei ver exemplos do uso do calendar e me deixou mais confuso.

obrigado

Amigo

Pode dar o substring pegando as duas posições de cada uma das datas e fazer uma subtração. Atenção coloca isso dentro de um try catch para pode lançar uma exception caso tenha algum problema.

e ai man…segue

import java.util.Calendar;

class DateTeste {

	public static void main(String[] args) {
		
		final Calendar jan2010 = Calendar.getInstance();
		jan2010.set(Calendar.MONTH, 0);
		final Calendar set2010 = Calendar.getInstance();
		set2010.set(Calendar.MONTH, 8);
		
		System.out.println(DateTeste.montsDifference(jan2010.getTime(), set2010.getTime())); // 8
		System.out.println(DateTeste.montsDifference(set2010.getTime(), jan2010.getTime())); // 0		
		System.out.println(DateTeste.montsDifference(jan2010.getTime(), jan2010.getTime())); // 0

		final Calendar fev2010 = Calendar.getInstance();
		fev2010.set(Calendar.MONTH, 1);
		System.out.println(DateTeste.montsDifference(jan2010.getTime(), fev2010.getTime())); // 1

		final Calendar jan2009 = Calendar.getInstance();
		jan2009.set(Calendar.YEAR, 2009)
		jan2009.set(Calendar.MONTH, 0);
		final Calendar dez2010 = Calendar.getInstance();
		dez2010.set(Calendar.MONTH, 11);
		System.out.println(DateTeste.montsDifference(jan2009.getTime(), dez2010.getTime())); // 23
	}

	public static Integer montsDifference(final Date paramDateStart, final Date paramDateEnd) {
		
		if (null == paramDateStart || null == paramDateEnd) {
			return null;
		}

		// iremos usar o comparator
		// menor -1, igual o, maior 1
		// por isso setamos por igual Dia, Hora, Minuto, Segundos, Milisegundos
		// obs: joguei a hora para 2 para evitar problema com horário de verão

		final Calendar dateStart = Calendar.getInstance();
		dateStart.setTime(paramDateStart);
		dateStart.set(Calendar.DAY_OF_MONTH, 1); 
		dateStart.set(Calendar.HOUR, 2);
		dateStart.set(Calendar.MINUTE, 0);
		dateStart.set(Calendar.SECOND, 0);
		dateStart.set(Calendar.MILLISECOND, 0);

		final Calendar dateEnd = Calendar.getInstance();
		dateEnd.setTime(paramDateEnd);
		dateEnd.set(Calendar.DAY_OF_MONTH, 1);
		dateEnd.set(Calendar.HOUR, 2);
		dateEnd.set(Calendar.MINUTE, 0);
		dateEnd.set(Calendar.SECOND, 0);
		dateEnd.set(Calendar.MILLISECOND, 0);

		final Integer ret = 0;

		// enquanto a dateStart for menor que dateEnd 
		// adicionamos 1 mês e incrementamos o valor de 'ret'
		while(dateStart.compareTo(dateEnd) < 0) {
			dateStart.add(Calendar.MONTH, 1);
			ret++;
		}

		return ret;
	}

}

espero ter ajudado