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

标签 java validation date project

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

相关文章:

mysql - 如何使用脚本将此日期格式转换为 mysql

javascript - 转换字符串 11/28/2014 11 :00 am to date in JavaScript

java - mergeSort - Java 中的破坏性与非破坏性

java - 是否可以使用 OAuth2 创建基于角色的应用程序?

java - 如何创建 BinaryOperator 来添加 BigInteger

javascript - 如何使用 Astronomy 的父属性验证表单 - MeteorJS

jquery - 通过提交按钮添加验证

java - 用 Stream 替换 for 循环中的递归

javascript - HTML 验证器返回 "document type does not allow element "脚本“此处”

linux - 使用 Shell 脚本进行数据、时间验证