2013-09-23 4 views
-2

내 질문에 어떤 것이 까다 롭습니다. List 또는 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년 12월 5일 즉 날짜를 입력, 그래서 내가 입력 날짜가 21/03/200021/03/2006 사이이며, 또한 "주어진 날짜가 21/03/2000 이후오고있다"라는 대답을해야합니다. 그래서 우리는 어떻게 그것을 성취 할 수 있습니까?

+1

와 어떤 문제가 해당 직면? – rptwsthi

+0

부인, 저도 그 아이디어를 얻지 못하고 있습니다. 이유는 여기에 제 질문을 게시하는 이유입니다. –

답변

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

내 모든 날짜가 목록에 있습니다 .. 그래서 어떻게 할 수 있습니까 ?? 나는 자바에 처음이다 ... –

+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

처럼 뭔가를 할 수 Joda 타임을 사용하는 대신 직접 java.util.Date와 함께 연주 해 봅니다. Joda-time은 Java에서 날짜를 가지고 놀기위한 클래스 API입니다. 그것은 똑같은 것을 여러 번 다시 작성하는 대신 직접 사용할 수있는 많은 유틸리티 메소드를 제공합니다. Maven을 사용하는 경우 종속성을 추가하고 다운로드하면됩니다.

감사합니다,

Bipul 신하 당신이, 당신은 당신이 작업 한 솔루션을 마련한다 시도 무엇

관련 문제