Java 比较不起作用的日期

Java 比较不起作用的日期,java,date,Java,Date,嘿,伙计们,我有个问题。 我的数据库中有一个开始/结束日期(date,date2),存储为dd/mm/yyyy。 我想测试今天的日期是否介于我刚才提到的两个日期之间。 我尝试了这个布尔函数,但它不起作用我不知道为什么它总是返回false: private Boolean test() { Boolean bool = false; String ch,ch2; Date d=new Date(); Date date2=new Date(); Date d

嘿,伙计们,我有个问题。 我的数据库中有一个开始/结束日期(date,date2),存储为dd/mm/yyyy。 我想测试今天的日期是否介于我刚才提到的两个日期之间。 我尝试了这个布尔函数,但它不起作用我不知道为什么它总是返回false:

private Boolean test() {
    Boolean bool = false;
    String ch,ch2;
    Date d=new Date();
    Date date2=new Date();
    Date date=new Date();
    try

    {   
        rs=st.executeQuery("select *from mytab");
        if(rs.next())
        {
            ch = rs.getString(2);
            ch2 = rs.getString(3);
            try
            {
                date = new SimpleDateFormat("dd-MM-YYYY", Locale.ENGLISH).parse(ch);
                date2 = new SimpleDateFormat("dd-MM-YYYY", Locale.ENGLISH).parse(ch2);
            }catch(ParseException s){
                System.out.println("Check parsing");
            }
            if(d.before(date2) && d.after(date))
            { 
                bool=true;
            }
        }
    }
    catch (SQLException e){System.out.println("Check the SQl");}    

return bool;
}

因为您的日期值以两种不同的格式存储……是的,为了将日期/时间信息存储为文本,您需要尝试多个格式化程序,以便将值解析回日期值

ApacheCommons有一个API可以做到这一点,但您也可以编写自己的API,例如

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {

  public static void main(String[] args) {
    String startDate = "14-08-2010";
    String endDate = "20/08/2020";

    SimpleDateFormat sdf[] = new SimpleDateFormat[] {
      new SimpleDateFormat("dd/MM/yyyy"),  
      new SimpleDateFormat("dd-MM-yyyy")};

    Date dateStart = parse(startDate, sdf);
    Date dateEnd = parse(endDate, sdf);

    System.out.println("Is today bewteen " + dateStart + " and " + dateEnd);
    Date today = new Date();
    if (today.after(dateStart) && today.before(dateEnd)) {
      System.out.println("...Yes");
    } else {
      System.out.println("...No");
    }
  }

  public static Date parse(String value, DateFormat... formatters) {
    Date date = null;
    for (DateFormat formatter : formatters) {
      try {
        date = formatter.parse(value);
        break;
      } catch (ParseException e) {
      }
    }
    return date;
  }

}
打印出

Is today bewteen Sat Aug 14 00:00:00 EST 2010 and Thu Aug 20 00:00:00 EST 2020
...Yes

如果你不知道为什么,那么是时候调试了。当你运行它时会发生什么?您是否尝试在代码中打印变量以查看它们是什么?如果是这样的话,当你打印它们时你会看到什么?记住,
Date
包含时间信息,你不仅仅是在比较日期部分,还比较时间部分。你有比较输出值的例子吗?看看这个是的,System.out.print(ch)打印数据库中存储的日期:“2010-08-14 00:00:00”System.out.print(date)没有,它打印“Sun Dec 31 00:00:00 WET 13”