I'm experiencing some frustrating problems when converting to java.sql.Date objects.
Let's say I've picked a date with JavaFx's `DatePicker’, specifically 1-1-2020. The java.sql.Date object will correctly reflect the selected date:
System.out.println("d: " + date1DatePicker.getValue().getDayOfMonth()); // Prints 1
System.out.println("m: " + date1DatePicker.getValue().getMonth()); // Prints 1
System.out.println("y: " + date1DatePicker.getValue().getYear()); // Prints 2020
// This date will be 1-1-2020
java.sql.Date date = Date.valueOf(date1DatePicker.getValue());
If, however, I choose one day before, that is, 12-31-2019, the converted Date object will be wrong:
System.out.println("d: " + date1DatePicker.getValue().getDayOfMonth()); // Prints 31
System.out.println("m: " + date1DatePicker.getValue().getMonth()); // Prints 12
System.out.println("y: " + date1DatePicker.getValue().getYear()); // Prints 2019
// This date will be 12-31-2020 !!!!!!!!!!!!!!!!
java.sql.Date date = Date.valueOf(date1DatePicker.getValue());
If I choose 12-30-2019, the conversion will still fail:
System.out.println("d: " + date1DatePicker.getValue().getDayOfMonth()); // Prints 30
System.out.println("m: " + date1DatePicker.getValue().getMonth()); // Prints 12
System.out.println("y: " + date1DatePicker.getValue().getYear()); // Prints 2019
// This date will be 12-30-2020 !!!!!!!!!!!!!!!!
java.sql.Date date = Date.valueOf(date1DatePicker.getValue());
Finally, if I choose 12-29-2019, the conversion will be correct:
System.out.println("d: " + date1DatePicker.getValue().getDayOfMonth()); // Prints 29
System.out.println("m: " + date1DatePicker.getValue().getMonth()); // Prints 12
System.out.println("y: " + date1DatePicker.getValue().getYear()); // Prints 2019
// This date will be 12-29-2019 ** FINALLY CORRECT **
java.sql.Date date = Date.valueOf(date1DatePicker.getValue());
I print java.sql.Date dates using:
System.out.println(new SimpleDateFormat("YYYY-MM-dd").format(date));
What's the problem here?