Java 检查给定日期是否在列表中的两个日期之间

Java 检查给定日期是否在列表中的两个日期之间,java,list,date,Java,List,Date,我有LinkedList通用Date LinkedList<Date> dateList = new LinkedList<Date>();` try { a= sdf.parse("21/03/2000"); b= sdf.parse("21/03/2006"); c= sdf.parse("18/09/2008"); }catch(ParseException pe)

我有
LinkedList
通用
Date

LinkedList<Date> dateList = new LinkedList<Date>();`
        try
        {
        a= sdf.parse("21/03/2000");
        b= sdf.parse("21/03/2006");
        c= sdf.parse("18/09/2008");
        }catch(ParseException pe)
        {
            System.out.println("not a date formate");
        }
        dateList.add(a);
        dateList.add(b);
        dateList.add(c);
LinkedList日期列表=新建LinkedList()`
尝试
{
a=sdf.parse(“21/03/2000”);
b=sdf.parse(“21/03/2006”);
c=sdf.parse(“18/09/2008”);
}捕获(解析异常pe)
{
System.out.println(“不是日期格式”);
}
日期表.添加(a);
日期表。添加(b);
日期表.添加(c);
如果用户输入一个日期,即2002年5月12日,那么用户应该得到一个提示,输入的日期介于
21/03/2000
21/03/2006
之间,并且它应该给出“给定日期在
21/03/2000
之后”的回答


我试过分类。但是没有起作用。新的
日期
类。

一个简单的日期比较程序,取自

我希望你能在此基础上建立你的逻辑

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

public class App 
{
     public static void main( String[] args ) 
    {
        try{

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date1 = sdf.parse("2009-12-31");
            Date date2 = sdf.parse("2010-01-31");

            System.out.println(sdf.format(date1));
            System.out.println(sdf.format(date2));

            if(date1.compareTo(date2)>0){
                System.out.println("Date1 is after Date2");
            }else if(date1.compareTo(date2)<0){
                System.out.println("Date1 is before Date2");
            }else if(date1.compareTo(date2)==0){
                System.out.println("Date1 is equal to Date2");
            }else{
                System.out.println("How to get here?");
            }

        }catch(ParseException ex){
            ex.printStackTrace();
        }
    }
}
import java.text.ParseException;
导入java.text.simpleDataFormat;
导入java.util.Date;
公共类应用程序
{
公共静态void main(字符串[]args)
{
试一试{
SimpleDataFormat sdf=新SimpleDataFormat(“yyyy-MM-dd”);
Date date1=sdf.parse(“2009-12-31”);
日期2=sdf.parse(“2010-01-31”);
System.out.println(sdf.format(date1));
System.out.println(sdf.format(date2));
如果(日期1.与(日期2)相比>0){
System.out.println(“日期1在日期2之后”);
}else if(日期1)与(日期2)相比
你可以这样做

日期a=新日期(“2000年3月21日”);
日期b=新日期(“2006年3月21日”);
日期c=新日期(“2008年9月18日”);
List dateList=new ArrayList();
日期=新日期(“2005年9月18日”);
日期表.添加(a);
日期表。添加(b);
日期表.添加(c);
for(日期minDate:日期列表){
对于(日期maxDate:dateList){
//系统输出打印项次(“之后”+日期之后(minDate));
//System.out.println(“在”+日期之前(maxDate));
System.out.println(“日期”+Date+”在“+minDate+”之后,在“+maxDate+”之前:“+String.valueOf(Date.After(minDate)和&Date.Before(maxDate)));
}
}

尝试使用Joda Time,而不是直接使用java.util.Date。Joda Time是java中用于使用Date的一类API。它提供了许多实用方法,您可以直接使用这些方法,而不是反复编写相同的内容。 如果您使用的是maven,只需添加其依赖项并下载即可

问候,


Bipul Sinha

您尝试了什么,您必须提出您一直在研究的解决方案,以及您在这方面面临的问题?女士,我不明白这一点,这就是为什么我在这里发布我的问题。我的所有日期都在列表中。因此,我该如何做呢?我是java新手…首先对列表进行排序。您可以使用Collection.Sort()方法,然后在列表上迭代以将输入日期与每个条目进行比较。一旦获得比列表中的日期大的日期,您就可以打印输出。欢迎并感谢您的回复。如果我能在这里帮助您,请不要忘记接受并对答案进行投票:)…这将有助于我建立声誉。当列表中有这么多日期时,我怎么做!!我知道这个解决方案,但我所有的日期都在列表中..那么我怎么做呢???@chaitanya我给了你循环逻辑,你可以根据你的需要和要求进行优化先生,请不要让用户输入日期,我们必须检查输入d日期是列表中两个日期之间的日期…!!@chaitanya代码已更新以获得您的帮助!。您最好根据您的需要调整和优化它谢谢先生,它对我帮助很大!!
 Date minDate, maxDate;   // assume these are set to something
 Date date;               // the date in question

 return date.after(minDate) && date.before(maxDate);
    Date a = new Date("21/03/2000");
    Date b = new Date("21/03/2006");
    Date c = new Date("18/09/2008");
    
    List<Date> dateList = new ArrayList<Date>();
    
    Date date = new Date("18/09/2005");
    
    dateList.add(a);
    dateList.add(b);
    dateList.add(c);
    
    for (Date minDate : dateList) {
        for (Date maxDate : dateList) {
            //System.out.println("After " + date.after(minDate));
            //System.out.println("Before " + date.before(maxDate));
            System.out.println("Date " + date + " is After " + minDate + " and Before " + maxDate + " : " + String.valueOf(date.after(minDate) && date.before(maxDate)));
        }
    }