2013-09-23 47 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辛哈

相關問題