在注册一个人之前,我需要验证出生日期不大于之前的日期,例如(01/01/1970) 和当前日期。
对我不起作用的方法:
public void agregarPersona() throws Exception {
ImplPersonaD dao;
try {
Date date = new Date();
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
String fechaActual = String.valueOf(dateFormat.format(date));
String fechaPasada = "01/01/1970";
if(fechaPasada > persona.getFechNac() <= fechaActual ){
dao = new ImplPersonaD();
dao.agregarPersona(persona);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Satisfactorio", "Ingresado correctamente"));
}
else{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Invalido", "Fecha invalida"));
}
} catch (Exception e) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "Hubo un problema"));
}
}
最佳答案
以下行无效,并且没有执行您认为应该执行的操作:
String fechaActual= String.valueOf(Calendar.DATE/Calendar.MONTH/Calendar.YEAR);
String fechaPasada = "01/01/1970";
if(fechaPasada > persona.getFechNac() <= fechaActual ){
您似乎想要检查 persona.getFechNac()
返回的值是否为 1970 年 1 月 1 日之后且当前日期之前或等于当前日期的日期。
正确的方法是这样的:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
// ...
LocalDate fechaActual = LocalDate.now();
LocalDate fechaPasada = LocalDate.of(1970, 1, 1);
LocalDate fechNac = LocalDate.parse(persona.getFechNac(),
DateTimeFormatter.ofPattern("dd/MM/yyyy"));
if (fechNac.isAfter(fechaPasada) && fechaActual.isBefore(fechNac)) {
// ...
}
我在这里假设 persona.getFechNac()
返回一个 String
,其中包含格式为 dd/MM/yyyy
的日期。
关于java - Java 中如何比较日期、先前日期和 future 日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53453446/