2013-09-23 19 views
-2

两个日期之间我的问题是一些棘手的,假设我有ListLinkedList泛型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年12月5日,所以我想,输入的日期是21/03/200021/03/2006之间,也应该给予的是“给定日期21/03/2000之后来了”的回答。那么我们该如何实现呢?从

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

采取

+1

你尝试过什么,你必须拿出你的解决方案,你一直在努力,什么问题你,面对? – rptwsthi

+0

女士,我不明白这一点,这就是为什么我在这里发布我的问题。 –

回答

0

一个简单的日期比较的程序,我希望你将能够在此建你的逻辑。

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

我的所有日​​期都在列表中..所以为什么我该怎么做?我是新来的java ... –

+0

首先排序列表。您可以使用Collection.Sort()方法,然后迭代列表以比较输入日期和每个条目。只要列出日期大于日期的日期,就可以打印输出。 – gyan

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

     } 
    } 
+0

我如何做到这一点,当这么多的日期在列表中!我知道这个解决方案,但我所有的日期都在列表中..所以我该怎么做呢? –

+0

@chaitanya我给你循环逻辑,你可以根据你的需要和要求进行优化 –

+0

先生,请不要该用户打算输入日期,我们必须检查输入日期是谎言之间的列表中哪两个日期...! –

1

尝试使用乔达时间,而不是与java.util.Date直接播放。 Joda时间是在Java中使用日期的一类API。它提供了很多可以直接使用的实用方法,而不是一次又一次地重写相同的事物。 如果你正在使用maven,你可以简单地添加它的依赖并下载它。

问候,

Bipul辛哈

相关问题