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

时间:2013-09-23 05:23:28

标签: java list date

我有LinkedList <{1}}

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);

如果用户输入日期即12/05/2002,那么用户应该提示输入的日期在21/03/200021/03/2006之间,并且它应该给出答案“给定日期在21/03/2000“之后。

我尝试了排序。但没有奏效。新Date课程。

3 个答案:

答案 0 :(得分:3)

 Date minDate, maxDate;   // assume these are set to something
 Date date;               // the date in question

 return date.after(minDate) && d.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)) );

        }
    }

答案 1 :(得分:1)

尝试使用Joda-Time而不是直接使用java.util.Date。 Joda-time是用于在Java中使用日期进行播放的一级API。它提供了许多实用方法,您可以直接使用它们,而不是一次又一次地重写相同的东西。 如果您使用的是maven,只需添加其依赖项并下载即可。

此致

Bipul Sinha

答案 2 :(得分:0)

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

http://www.mkyong.com/java/how-to-compare-dates-in-java/

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

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();
        }
    }
}