Gente, o código a seguir faz parte de uma aplicação bem maior, mas afim de isolar apenas esse problema, eu preferi criar uma aplicação isolada e completamente funcional.
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class TestandoProcessamentoDatas
{
private static int dia1;
private static int mes1;
private static int ano1;
private static int dia2;
private static int mes2;
private static int ano2;
public static void main(String[] args)
{
String data1, data2;
Scanner input = new Scanner(System.in);
System.out.println("Insira a 1ª data no formato DD/MM/AAAA");
data1 = input.nextLine();
System.out.println("Insira a 2ª data no formato DD/MM/AAAA");
data2 = input.nextLine();
processadata(data1,true);
processadata(data2,false);
System.out.println(dia1 + "-" + mes1 + "-" + ano1);
System.out.println(dia2 + "-" + mes2 + "-" + ano2);
}
public static void processadata(String data, boolean isData1){
StringTokenizer tok = new StringTokenizer(data, "/");
while(tok.hasMoreTokens()) {
if(isData1){
dia1 = Integer.parseInt(tok.nextToken());
mes1 = Integer.parseInt(tok.nextToken());
ano1 = Integer.parseInt(tok.nextToken());
} else {
dia2 = Integer.parseInt(tok.nextToken());
mes2 = Integer.parseInt(tok.nextToken());
ano2 = Integer.parseInt(tok.nextToken());
}
GregorianCalendar data1 = new GregorianCalendar(ano1, mes1, dia1);
GregorianCalendar data2 = new GregorianCalendar(ano2, mes2, dia2);
data2.add(Calendar.DAY_OF_MONTH, 1);
dia1 = data1.get(Calendar.DAY_OF_MONTH);
mes1 = data1.get(Calendar.MONTH);
ano1 = data1.get(Calendar.YEAR);
dia2 = data2.get(Calendar.DAY_OF_MONTH);
mes2 = data2.get(Calendar.MONTH);
ano2 = data2.get(Calendar.YEAR);
}
}
}
O fato é o seguinte, infelizmente, por causa do modo como a tabela que eu leio no banco de dados está organizada, eu realmente preciso de variáveis separadas para dia/mes/ano. Mas na tabela na qual eu escrevo eu preciso utilizar uma única string, daí eu precisar reformatar a data, eu uso o gregorian calendar pelo simples fato de eu precisar incrementar em um dia a segunda data (um erro imbecil do banco de dados, não me peçam para explicar), mas o problema, é que o gregorian calendar formata as datas sem o zero na frente.
exemplo:
eu recebo dele: 3/5/2008
e eu preciso: 03/05/2008
Entendem? Por isso eu estava pensando em utilizar o simple date format, mas pra falar a verdade, nunca utilizei ele antes, alguém tem alguma sugestão?
Muito obrigado desde já.