import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class ProvaAnniversario40 {
public static void main(String[] args) throws ParseException {
provaAggiungi40Anni("10/04/2018");
}
private static void provaAggiungi40Anni(String inputStr) throws ParseException {
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date inputDate = df.parse(inputStr);
Calendar cal = Calendar.getInstance();
cal.setTime(inputDate);
int inputDow = cal.get(Calendar.DAY_OF_WEEK);
cal.add(Calendar.YEAR, 40);
int outputDow = cal.get(Calendar.DAY_OF_WEEK);
Date outputDate = cal.getTime();
String outputStr = df.format(outputDate);
System.out.printf("%s (%d) ---> %s (%d)%n",
inputStr, inputDow, outputStr, outputDow);
}
}
L'output è:
10/04/2018 (3) ---> 10/04/2058 (4)
Quel 3 è Martedì, 4 è Mercoledì.
Nota: Calendar.SUNDAY = 1 ; Calendar.MONDAY = 2 ; ecc.....
P.S. se la data di inizio fosse il 29/02/1860, guarda cosa succede:
29/02/1860 (4) ---> 28/02/1900 (4)
Il 1860 è bisestile, il 1900 no. Quindi non esistendo il 29/02/1900 ha "aggiustato" al 28/02.
Sì .. è un caso MOLTO particolare.