Comparar e somar datas no formato yyyymm

Olá Pessoal !!
Seguinte… Sou uma negação pra trabalhar com datas :oops:
Preciso muito da ajuda de vcs.

Eu preciso fazer o seguinte:

1 - Tenho 2 datas que só devo levar em consideração mes e ano.
2 - Enquanto uma data não for igual a outra, ele deve fazer algo
3 - O Formato deve ser: yyyymm

O algoritmo é o +/- o seguinte (mas não sei como fazer de forma q funcione hehe… nunca mexo com datas e é nisso q dá :frowning: ):
É por ai…


StringBuffer sb = new StringBuffer();
oldDate = 200808;  //  08/2008
currentDate = 200907;  //  07/2009

while( currentDate >= oldDate){
       sb.append(oldDate + " ");
       oldDate.add(Calendar.MONTH, 1);
}

Bem…
A saída esperada, no sb, é: 200808 200809 200810 200811 200812 200901 200902 200903 200904 200905 200906 200907

Como faço no caso de comparar 2 datas no formato yyyymm ?
E como adicionar 1 mes nessa data, com esse formato ?

Isso q está sendo ruim pra fazer…
Não encontrei nada parecido no google…

Obrigado

Vê se isso te ajuda cara!


        Calendar c = Calendar.getInstance();
        c.set(Calendar.MONTH, 9); // isso define o mês, e é indexado com 0 então mes 9 = outubro e nao setembro!
        c.set(Calendar.YEAR, 2010); // 2010
        DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
        System.out.println(df.format(c.getTime())); // isso imprime a data do objeto 'c' DD/10/2010 onde DD é aparentemente o dia de hoje
        Calendar c2 = Calendar.getInstance();
        c2.set(Calendar.MONTH, 8); // define o mes como setembro
        c2.set(Calendar.YEAR, 2010); // ano 2010
        System.out.println(df.format(c2.getTime())); // isso imprime a data do objeto 'c2' DD/09/2010 onde DD é aparentemente o dia de hoje
        // agora vamos fazer o que você quer... que é comparar datas!
        while ((c.get(Calendar.MONTH) != c2.get(Calendar.MONTH)) || (c.get(Calendar.YEAR) != c2.get(Calendar.YEAR))) {
            // aqui eu to dizendo pra ele entrar no loop caso o mês OU o ano das datas sejam diferentes!
            // método get(field) retorna o numero do campo da data que voce pedir.. entao... enquanto um for diferente do outro ele deve continuar o loop
            // aqui você tem que fazer o que voce quer... vamos dizer que voce queira incrementar c2(setembro) até chegar em outubro
            c2.add(Calendar.MONTH, +1);
        }
        System.out.println(df.format(c2.getTime())); // aqui mostra que c2 foi incrementado e mostra a nova data! DD/10/2010

[quote=Murl]Vê se isso te ajuda cara!

[code]

    Calendar c = Calendar.getInstance();
    c.set(Calendar.MONTH, 9); // isso define o mês, e é indexado com 0 então mes 9 = outubro e nao setembro!
    c.set(Calendar.YEAR, 2010); // 2010
    DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
    System.out.println(df.format(c.getTime())); // isso imprime a data do objeto 'c' DD/10/2010 onde DD é aparentemente o dia de hoje
    Calendar c2 = Calendar.getInstance();
    c2.set(Calendar.MONTH, 8); // define o mes como setembro
    c2.set(Calendar.YEAR, 2010); // ano 2010
    System.out.println(df.format(c2.getTime())); // isso imprime a data do objeto 'c2' DD/09/2010 onde DD é aparentemente o dia de hoje
    // agora vamos fazer o que você quer... que é comparar datas!
    while ((c.get(Calendar.MONTH) != c2.get(Calendar.MONTH)) || (c.get(Calendar.YEAR) != c2.get(Calendar.YEAR))) {
        // aqui eu to dizendo pra ele entrar no loop caso o mês OU o ano das datas sejam diferentes!
        // método get(field) retorna o numero do campo da data que voce pedir.. entao... enquanto um for diferente do outro ele deve continuar o loop
        // aqui você tem que fazer o que voce quer... vamos dizer que voce queira incrementar c2(setembro) até chegar em outubro
        c2.add(Calendar.MONTH, +1);
    }
    System.out.println(df.format(c2.getTime())); // aqui mostra que c2 foi incrementado e mostra a nova data! DD/10/2010

[/code][/quote]

Fala cara !
Obrigado pela ajuda.
Eu fiz da seguinte forma, e tive o resultado esperado:

       StringBuffer sb = new StringBuffer();
       SimpleDateFormat formatter = new SimpleDateFormat("yyyyMM");
       Calendar currentDate = Calendar.getInstance();

       Calendar oldDate = Calendar.getInstance();
       oldDate.set(Calendar.MONTH, 7);
       oldDate.set(Calendar.YEAR, 2008);

       while ( Integer.parseInt(formatter.format(currentDate.getTime())) >= Integer.parseInt(formatter.format(oldDate.getTime())) ) {
           sb.append(formatter.format(oldDate.getTime()) + " ");
           oldDate.add(Calendar.MONTH, +1);
       }

A saída foi: 200808 200809 200810 200811 200812 200901 200902 200903 200904 200905 200906 200907
Exatamente oq eu precisava…
Sei q isso foi mais um POG dq qq outra coisa, mas preciso disso funcionando pra amanhã no mais tardar :lol:
Então, depois fatoro pra uma versão mais rapida e simples.

VLW !!!