Comparando datas respeitando os dias do mês

Olá pessoal.

preciso comparar duas datas que vem no seguinte formato:
ddMMyyyyHHmm

String de="140520061020", ate="400620061020";

Como faço para comparar se uma data vem antes que a outra?
Preciso também que saber se o dia existe no mês, tipo 31/06 não existe…

Tentei utilizar SimpleDateFormat:


String de="140520061020", ate="310620061020";
SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyyHHmm");
		
try {
       Date dataDe = sdf.parse(de);
       Date dataAte = sdf.parse(ate);
       boolean b = dataDe.before(dataAte);
       System.out.println(b);
} 
catch (ParseException e) {
       e.printStackTrace();
       //Data errada.
}

Algué tem alguma solução para este meu problema??

Pessoal, resolvi o problema:


String de="140520061020", ate="310620061020"; 
SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyyHHmm"); 


//trecho novo
sdf.setLenient(false);
       
try { 
       Date dataDe = sdf.parse(de); 
       Date dataAte = sdf.parse(ate); 
       boolean b = dataDe.before(dataAte); 
       System.out.println(b); 
} 
catch (ParseException e) { 
       e.printStackTrace(); 
       //Data errada. 
} 

foi inserido no código o sdf.setLenient(false);
ao invés de simplesmente pegar os 9 dias a mais do mes(06 tem 31 dias, ou seja 40 são 9 dias a mais) e jogar para o próximo, como estava fazendo, ele dispara uma exception.

Era o que estava querendo…