O cal.getMaximum(Calendar.DAY_OF_MONTH) retorna 31!! Daí a data é convertida para 01/07. Bug? O que acontece?
class teste {
static public void main(String[] args) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, 5); // Junho
// Maior dia de junho, ou seja, 30... Pelo menos o meu calendário diz isso!
cal.set(Calendar.DAY_OF_MONTH, cal.getMaximum(Calendar.DAY_OF_MONTH));
DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
// Aqui ele imprime 01/07/2008
System.out.println(df.format(cal.getTime()));
// Aqui imprime 31!!
System.out.println(String.valueOf(cal.getMaximum(Calendar.DAY_OF_MONTH)));
}
}