java - hora - Obtener 18 años antes de la fecha del calendario
time picker java netbeans (2)
En Java, un valor de fecha es solo el número de milisegundos desde un punto fijo en el tiempo, las clases relacionadas no tienen un formato propio que usted pueda cambiar, esto es lo que los formateadores de fecha / hora son para
Calendario
Según su ejemplo, básicamente está ignorando el hecho de que el cambio de cualquiera de los campos del Calendar
afectará a todos los demás, por ejemplo ...
Calendar cal = Calendar.getInstance();
cal.set(2015, Calendar.JUNE, 01); // Comment this out for today...
cal.add(Calendar.YEAR, -18);
cal.add(Calendar.DATE, -1);
Date date = cal.getTime();
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(date));
Que salidas
31/05/1997
Sin embargo, recomendaría usar la nueva API Time API o Joda-Time de Java 8
API de Java 8 Time
LocalDate ld = LocalDate.now();
ld = ld.minusYears(18).minusDays(1);
System.out.println(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(ld));
Que salidas
26/06/1997
Caso extremo...
LocalDate ld = LocalDate.of(2015, Month.JUNE, 1);
ld = ld.minusYears(18).minusDays(1);
System.out.println(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(ld));
Que salidas
31/05/1997
JodaTime
LocalDate ld = new LocalDate();
ld = ld.minusYears(18).minusDays(1);
System.out.println(DateTimeFormat.forPattern("dd/MM/yyyy").print(ld));
Que salidas
26/06/1997
Caso extremo...
LocalDate ld = new LocalDate(2015, DateTimeConstants.JUNE, 1);
ld = ld.minusYears(18).minusDays(1);
System.out.println(DateTimeFormat.forPattern("dd/MM/yyyy").print(ld));
Que salidas
31/05/1997
Necesito obtener la fecha completa (dd / mm / aaaa) que es 18 años a partir de ahora. utilicé el código como Calendar calc = Calendar.getInstance (); calc.add (Calendar.YEAR, -18); que recupera 18 años antes del año, no el mes o la fecha. Necesito un día 18 años antes de la fecha actual, incluso en casos de esquina como el 1 de cualquier mes también. Ejemplo 1-06-2015 es la fecha actual debería ser 31-05-1997. Para ser notado necesito código en java6
Recomendaría usar Joda Time , ya que hará que la manipulación de fechas y las matemáticas sean muy fáciles. Por ejemplo:
DateTime futureDate = new DateTime();
futureDate.minusYears(18).minusDays(1);
futureDate.toDate(); // return a regular Date object