Introducir fecha de nacimiento en Java

Estuve intentando introducir una fecha de nacimiento usando Java y no obtuve el resultado deseado, pongo el código:

public static void main(String[] args){
Integer diaNacimiento=15;
Integer mesNacimiento=11;
Integer añoNacimiento=1999;
Date fecha = new Date(añoNacimiento,mesNacimiento,diaNacimiento);
System.out.println(fecha.getYear());
System.out.println(fecha.getMonth());
System.out.println(fecha.getDay());
}

5 Respuestas

Respuesta
1

El problema que tienes es con el api de Java. Realmente, el api para las fechas es malísimo.

Lo que quieres hacer es fecha. GetDate(), para obtener el día dentro del mes. GetDay lo que da es el día dentro de la semana (5, es un Viernes).

Según el Api 7, todo esto esta "deprecated", en lugar de este código, recomiendan usar el siguiente código:

public static void main(String[] args){
Integer diaNacimiento=15;
Integer mesNacimiento=11;
Integer añoNacimiento=1999;

Calendar fecha = new GregorianCalendar(añoNacimiento,mesNacimiento,diaNacimiento);
System.out.println("Año:"+fecha.get(Calendar.YEAR));
System.out.println("Mes:"+fecha.get(Calendar.MONTH));
System.out.println("Día:"+fecha.get(Calendar.DAY_OF_MONTH));
}

Respuesta
1

Yo no le daría ningún valor a los variables, y los pediría que los metiera el usuario para probar, de todas formas.

Después hay una forma mas correcta que seria esta.

Guardas un String que vaya tipo 05-11-1999 y te lo pasa a formato fecha, después si lo puedes separar.

public static synchronized java.útil.Date deStringToDate(String fecha) {
SimpleDateFormat formatoDelTexto = new SimpleDateFormat("dd-MM-yyyy");
Date fechaEnviar = null;
try {
fechaEnviar = formatoDelTexto.parse(fecha);
return fechaEnviar;
} catch (ParseException ex) {
ex.printStackTrace();
return null;
}
}

}

Esto lo haces para convertir en fecha.

public String obtenerAnio(Date date){
if (null == date){
return 0;
}
else{
formato="yyyy";
SimpleDateFormat dateFormat = new SimpleDateFormat(formato);
return Integer.parseInt(dateFormat.format(date));
}
}
Para obtener el mes de un Date de Java:
public String obtenerMes(Date date){
if (null == date){
return 0;
}
else{
formato="MM";
SimpleDateFormat dateFormat = new SimpleDateFormat(formato);
return Integer.parseInt(dateFormat.format(date));
}
}
Para obtener el día de un Date de Java:
public String obtenerDia(Date date){
if (null == date){
return 0;
}
else{
formato="dd";
SimpleDateFormat dateFormat = new SimpleDateFormat(formato);
return Integer.parseInt(dateFormat.format(date));
}
}

Esto lo tendrás que juntar todo, realmente haces mucho código pero si es para algún ejercicio y eso esta correcto

Respuesta
1

El método que buscas es fecha. GetDate() (te saca el día del mes), mientras que el que tú has puesto (getDay()) te saca el día de la semana.

Te aviso de que los meses cuentan de 0 (enero) a 11 (diciembre), o sea, que el 11 que estás metiendo es diciembre, no noviembre.

También te comento que desde hace años, esta manera de sacar las fechas está desaconsejada, como puedes ver en la documentación (los métodos deprecated):

<a>http://docs.oracle.com/javase/6/docs/api/java/util/Date.html</a>

La manera recomendada, más segura, es utilizando la clase Calendar. Puedes crear una instancia nueva con Calendar. GetInstance() o con new GregorianCalendar().

Respuesta
1
Respuesta
1

INTENTA ESTO...

import java.útil.GregorianCalendar;
public class text {
public static void main(String[] args) {
GregorianCalendar dd=new GregorianCalendar();
//SI NO SETEO LA FECHA EL CONSTRUCTOR POR DEFECTO
//LE PONE LA FECHA ACTUAL
dd.set(GregorianCalendar.DATE,15);
dd.set(GregorianCalendar.MONTH,11);
dd.set(GregorianCalendar.YEAR,1980);
//EL MES SE CUENTA DE 0 A 11, DICIEMBRE ES EL 11 ETC.
System.out.println(dd.getTime());
System.out.println("día:" + dd.get(GregorianCalendar.DATE));
System.out.println("mes:" + (dd.get(GregorianCalendar.MONTH) +1) );
System.out.println("año:" + dd.get(GregorianCalendar.YEAR));
}
}
//Fijate que el mes se cuenta de 0 a 11 y hay que sumar 1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas