Buenos días gente, estoy teniendo algunos problemas al comparar unos java.sql.Time. Les comento lo que estoy queriendo hacer, es un sistema en el cual existe un Profesional, el cual puede registrar citas, las citas tienen una fecha, una hora de inicio y una hora de fin. La idea es que el sistema no le permita crear una cita nueva si es que la misma se superpone con alguna cita ya creada... un fragmento de la clase Cita: public class Cita { //..... @Column(name="fecha") @Required private java.util.Date fecha;
LA FECHA DE CITAS GUARDADA: Sun Sep 04 00:00:00 ART 2016 LA FECHA NUEVA: Sun Sep 04 00:00:00 ART 2016 las fechas son iguales hora: 08:00:00 inicio: 08:00:00 fin: 09:00:00 hora.after(inicio): true hora.before(fin): false hora.equals(inicio): false LA FECHA DE CITAS GUARDADA: Sun Sep 04 00:00:00 ART 2016 LA FECHA NUEVA: Sun Sep 04 00:00:00 ART 2016 las fechas son iguales hora: 08:00:00 inicio: 08:30:00 fin: 09:30:00 hora.after(inicio): true hora.before(fin): false hora.equals(inicio): false supuestamente esta libre
Como ven me arroja cualquier cosa! por ultimo les dejo lo que guarda en la base de datos. (postgresql): hora_fin hora_inicio 09:00:00.483 ; 08:00:00.482 09:30:00.881 ; 08:30:00.881 09:00:00.445 ; 08:00:00.445
los tipos de datos de las columnas: hora_fin time without time zone, hora_inicio time without time zone,
Ojala me puedan orientar, ya estoy hace un tiempo, leyendo pero todavía no encuentro que estoy haciendo mal. Muchas gracias desde ya! Saludos!!
Buenos días gente, estoy teniendo algunos problemas al comparar unos java.sql.Time. Les comento lo que estoy queriendo hacer, es un sistema en el cual existe un Profesional, el cual puede registrar citas, las citas tienen una fecha, una hora de inicio y una hora de fin. La idea es que el sistema no le permita crear una cita nueva si es que la misma se superpone con alguna cita ya creada...
un fragmento de la clase Cita:
public class Cita {
//.....
@Column(name="fecha")
@Required
private java.util.Date fecha;
@Column(name="hora_inicio")
@Required
private java.sql.Time horaInicio;
@Column(name="hora_fina")
@Required
private java.sql.Time horaFin;
//....
}
un fragmento de la clase Profesional:
public class Profesional {
@OneToMany(mappedBy="profesional")
private List<Cita> citas;
public Boolean estaLibre(Date fecha, java.sql.Time inicio, java.sql.Time fin){
Boolean retorno = true;
Date fechaCita;
Date fechaNueva;
for (Cita cita : this.citas) {
fechaCita = Util.darFormatoConGuiones(cita.getFecha());
fechaNueva = Util.darFormatoCompleto(fecha);
System.out.println("LA FECHA DE CITAS GUARDADA: "+fechaCita);
System.out.println("LA FECHA NUEVA: "+fechaNueva);
if(fechaCita.equals(fechaNueva)){
System.out.println("las fechas son iguales");
if((Util.estaEnRangoTime(inicio, cita.getHoraInicio(), cita.getHoraFin()))){
//|| (Util.estaEnRangoTime(fin, cita.getHoraInicio(), cita.getHoraFin()))){
retorno = false;
}
}
}
return retorno;
}
}
El metodo Util.estaEnRangoTime:
public static Boolean estaEnRangoTime(java.sql.Time hora, java.sql.Time inicio, java.sql.Time fin){
Boolean retorno = false;
if(((hora.after(inicio)) && (hora.before(fin))) || (hora.equals(inicio))){
retorno = true;
}
System.out.println("hora: "+hora);
System.out.println("inicio: "+inicio);
System.out.println("fin: "+fin);
System.out.println("hora.after(inicio): "+hora.after(inicio));
System.out.println("hora.before(fin): "+hora.before(fin));
System.out.println("hora.equals(inicio): "+hora.equals(inicio));
return retorno;
}
La salida por consola:
LA FECHA DE CITAS GUARDADA: Sun Sep 04 00:00:00 ART 2016
LA FECHA NUEVA: Sun Sep 04 00:00:00 ART 2016
las fechas son iguales
hora: 08:00:00
inicio: 08:00:00
fin: 09:00:00
hora.after(inicio): true
hora.before(fin): false
hora.equals(inicio): false
LA FECHA DE CITAS GUARDADA: Sun Sep 04 00:00:00 ART 2016
LA FECHA NUEVA: Sun Sep 04 00:00:00 ART 2016
las fechas son iguales
hora: 08:00:00
inicio: 08:30:00
fin: 09:30:00
hora.after(inicio): true
hora.before(fin): false
hora.equals(inicio): false
supuestamente esta libre
Como ven me arroja cualquier cosa! por ultimo les dejo lo que guarda en la base de datos. (postgresql):
hora_fin hora_inicio
09:00:00.483 ; 08:00:00.482
09:30:00.881 ; 08:30:00.881
09:00:00.445 ; 08:00:00.445
los tipos de datos de las columnas:
hora_fin time without time zone,
hora_inicio time without time zone,
Ojala me puedan orientar, ya estoy hace un tiempo, leyendo pero todavía no encuentro que estoy haciendo mal. Muchas gracias desde ya! Saludos!!