gpt4 book ai didi

java - Java 中如何比较日期、先前日期和 future 日期?

转载 作者:行者123 更新时间:2023-11-30 01:59:15 25 4
gpt4 key购买 nike

在注册一个人之前,我需要验证出生日期不大于之前的日期,例如(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com