2010-03-30 2 views
2

날짜가 맞는지 여부를 확인하기 위해이 코드를 가지고 있지만 모든 경우에 해당하지는 않습니다. 예를 들어 text = "03/13/2009"일 때이 날짜는 "dd/MM/yyyy"형식으로 존재하지 않으므로 날짜를 03/01/2010으로 구문 분석합니다. 이 동작을 변경하고 올바르지 않은 날짜를 구문 분석하려고 할 때 예외가 발생하는 어떤 방법이 있습니까? 이 유효성 검사를 수행하는 가장 좋은 방법은 무엇입니까?날짜 구문 분석이 올바른지 확인하기

public static final String DATE_PATTERN = "dd/MM/yyyy"; 

public static boolean isDate(String text){ 
    SimpleDateFormat formatter = new SimpleDateFormat(DATE_PATTERN); 
    ParsePosition position = new ParsePosition(0); 
    formatter.parse(text, position); 
    if(position.getIndex() != text.length()){ 
     return false; 
    }else{ 
     return true; 
    } 
} 

감사합니다.

제 생각에는
+2

그것은 당신의 D의 일부 또는 전부 같은 소리 확인 ates는 미국 시스템 인 MM/dd/yyyy를 사용하여 포맷 될 수 있습니다. 그렇다면, 여전히하려는 것은 모든 경우에 작동하지 않을 것입니다. 두 시스템 모두에서 유효하기 때문에 모호한 날짜가 있습니다. 날짜가 동일한 시스템을 사용하여 형식화되고 해당 시스템이 무엇인지 알고 있는지 확인해야합니다. –

+0

@Mark Byers 나는 파싱 된 날짜를 출력하고 있기 때문에 "MM/dd/yyyy"로 파싱 된 날짜를 생각하지 않는다. 그리고 텍스트 = "03/13/2009"나는 날짜를 얻고있다 Jan Jan 03 00 00 : 00 CET 2010. "MM/dd/yyyy"로 구문 분석하는 경우 2010 년 1 월 3 일이 아닌 2009 년 3 월 13 일이되어야합니다. – Javi

답변

-3

날짜를 확인하는 가장 좋은 방법은 정규 표현식을 사용하는 것입니다, 당신은 당신이 필요 여기에 몇 가지 튜토리얼 http://java.sun.com/docs/books/tutorial/essential/regex/index.html

+1

아니요, 더 나은 날짜 구문 분석 라이브러리를 사용해야합니다. 날짜 구문 분석은 너무 복잡하여 직접 시도하지 않습니다. 잘만되면 누군가 다른 사람을 잘 알고 있습니다. – Thilo

+0

나는 당신을 이해하지 못합니다. 왜 당신은 더 열심히하고 있습니까? 정규식은 날짜를 구문 분석하는 좋은 방법이며 자신 만의 패턴을 구성 할 수 있습니다. 당신이 다국적 공간 슈퍼 웹 사이트 또는 응용 프로그램을 만들고 있지 않다면, 그것을 할 수있는 좋은 옵션입니다. 나는 내 생각에 썼다. – sanjuro

+1

나는 Thilo에 동의한다. 정규 표현식으로하기가 어렵다. 예를 들어, 29th 2 월은 단지 4 년마다 존재하며, 이러한 것들은 정규 표현식에서 쉽게 처리하기에는 너무 복잡합니다. – Javi

관련 문제