Java - comparacion de fechas

 
Vista:

comparacion de fechas

Publicado por jair florez (6 intervenciones) el 02/04/2009 22:26:46
Hola que tal............ esto de antemano doy las gracias, lo que sucede compañeros es que tengo un problema con mi aplicativo en java. mi aplicativo es para una empresa de transporte:
En uno de los formularios necesito comparar 2 fechas la del sistema que la tengo en una caja de texto oculta, cargando atravez de un metodo en el initComponents() y la otra fecha es la de vencimiento de la licencia de conduccion la cual la tengo digitandola por teclado en una caja de texto visible. "lo que yo verdaderamente necesito es poder visualizar un mensaje de alerta que diga en los ultimos 5 dias para vencerse la licencia de conduccion que ya esta cerca para vencerse". !!!!!!!ojo el problema esta es en que no tengo ni idea de como comparar las fechas y ademas que me lo muestre en los ultimos 5 dias antes de vencerse y no en el mensaje!!!!!!!!!!!!. por favor necesito de su ayuda lo mas pronto posible..........gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:comparacion de fechas

Publicado por Jorge Prado (15 intervenciones) el 03/04/2009 01:20:04
Primero cómo obtienes ambas fechas?

porque por ejemplo:

int d1, d2, m1, m2, a1, a2;
Calendar cal=Calendar.getInstance();
a1=cal.get(Calendar.YEAR);
m1=cal.get(Calendar.MONTH);
d1=cal.get(Calendar.DAY_OF_MONTH);
System.out.println("dia: "+d1+" mes:"+m1+" año:"+a1);

con esto obtienes la fecha del sistema separada en dia, mes, año, y ya fecha de la licencia la puedes separar en mes, dia y año y hacer las comparaciones necesarias para ver el rango que deseas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:comparacion de fechas

Publicado por jair florez (6 intervenciones) el 03/04/2009 21:55:17
HOLA QUE TAL ESTO GRACIAS POR TU AYUDA.. PERO QUERIA SABER SI ME PODRIAS COLABORAR A SOLUCIONAR TOTALMENTE EL PROBLEMA.

LA PRIMERA FECHA ES LA DEL SISTEMA Y LA ESTOY CAPTURANDO CON ESTE METODO QUE PREVIAMENTE ME REGALASTE:

int d1, d2, m1, m2, a1, a2;
Calendar cal=Calendar.getInstance();
a1=cal.get(Calendar.YEAR);
m1=cal.get(Calendar.MONTH);
d1=cal.get(Calendar.DAY_OF_MONTH);
System.out.println("dia: "+d1+" mes:"+m1+" año:"+a1);

LA OTRA FECHA ES LA DE FECHA DE VENCIMIENTO DEL PASE DE CONDUCCION LA CUAL SE DIGITA ATRAVEZ DE TECLADO,EN UN CAMPO STRING..........PERO OJO EN LA BASE DE DATOS ESTA ES CON DATETIME PORQUE ES SQL SERVEREXPRESS 2005.

EL PROBLEMA ESTA ES QUE EN MI APLICATIVO TENGO UN FORMULARIO DE ALERTAS EL CUAL LE AVISA AL USUARIO QUE EL PASE ESTA POR VENCERSE Y NECESITA RENOVARLO. LA IDEA ES QUE COMPARE LAS FECHAS Y LE ENVIE UN MENSAJE TAN PRONTO ENTRE AL FORMULARIO DICIENDOLE QUE NECESITA RENOVARLO Y QUE LO HAGA DURENTE LOS ULTIMOS 5 DIAS ANTES DE VENCERSE EL PASE........ PARA RECORDARLES...................... LE AGRADEZCO EN EL ALMA SI ME AYUDA GRACIAS.........
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:comparacion de fechas

Publicado por Jorge Prado (15 intervenciones) el 03/04/2009 22:55:46
Como dijo Jack el Destripador: vamonos por partes.

LA IDEA ES QUE COMPARE LAS FECHAS Y LE ENVIE UN MENSAJE TAN PRONTO ENTRE AL FORMULARIO DICIENDOLE QUE NECESITA RENOVARLO Y QUE LO HAGA DURENTE LOS ULTIMOS 5 DIAS ANTES DE VENCERSE EL PASE........

Primero, ya obtienes la fecha del sistema.

Ahora tienes que obtener de la base de datos la fecha del pase para poder compararlo con la del sistema. La fecha está en formato de Datetime (si puedes cambiarlo a Date, mejor, pues Date solo guarda fecha sin la hora). La sistaxis no la se correctamente así que solo te doy mi opinión de la idea: En java recupara la fecha del pase a un formato supongo Object ( Object fecha=con.ExecuteQuery(select fecha from pase ...... [te digo, de la forma que sepas recuparlo])). Ahora, el tipo Object lo puedes cambiar a tipo String. Incluso creo que puedes obtenerlo directamente al hacer la consulta de manera String, y casi estoy seguro de eso.

Ya que tienes la fecha de la Base de Datos en formato String, solo te queda compararla con la fecha del sitema, obteniendo los datos de la cadena String de la fecha por partes, ¿? osea, traer los primeros 2 numeros (dia), para compararlos con el dia actual, luego los otros 2 numeros (mes) y finalmente los 4 ultimos (años).

Este ejemplito es algo sencillo de lo que te quiero decir:

try
{
Calendar cal=Calendar.getInstance();
d1=cal.get(Calendar.DAY_OF_MONTH);
m1=cal.get(Calendar.MONTH);
m1++; // El mes + uno.
a1=cal.get(Calendar.YEAR);
System.out.println("Fecha del sistema: "+d1+"/"+m1+"/"+a1);

String cad=com.getText(); // Esto es de una caja de texto
cad="25/06/2009"; // Cadena que traes de la Base de Datos. Esto es // un ejemplo
d2=Integer.parseInt(cad.substring(0,2)); // Traer de la cadena de la fecha de //la base de datos los 2 prim. numeros para sacar el dia. El //Integer.parseInt(cad.substring es para cambiarlo a tipo Int.
m2=Integer.parseInt(cad.substring(3,5)); // mes
a2=Integer.parseInt(cad.substring(6,10)); // año
System.out.println("Fecha de entrada: "+d2+"/"+m2+"/"+a2);
}
catch(NumberFormatException e){
System.out.println("Error al convertir");
}


Ya tienes las 2 fechas divididas en dia, mes y año. Ya solo te queda hacer las comparaciones necesarias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar