-2

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

如果用户输入一个日期,即 2002 年 5 月 12 日,那么用户应该得到一个提示,输入的日期介于两者之间21/03/200021/03/2006并且它应该给出“给定日期之后21/03/2000”的答案。

我尝试排序。但没有用。新Date上课。

4

3 回答 3

3
 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)));
        }
    }
于 2013-09-23T05:28:05.763 回答
1

尝试使用 Joda-Time 而不是直接使用 java.util.Date。Joda-time 是 Java 中用于玩日期的一类 API。它提供了许多实用方法,您可以直接使用它们,而不是一次又一次地重写相同的东西。如果你使用的是 maven,你可以简单地添加它的依赖并下载它。

问候,

比普尔辛哈

于 2013-09-23T07:47:41.713 回答
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();
        }
    }
}
于 2013-09-23T05:26:52.487 回答