2010-02-25 3 views
4

Java에서 그렇습니다. 사용자에게 24 시간 형식으로 시간을 요청하고 싶습니다. 나는 DateFormatSimpleDateFormat을 사용하여 시간이 입력되는 형식을 알려주고 그 결과를 해석하여 형식을 따르지 않으면 예외를 throw합니다. 다음은 내가 가지고있는 것입니다.유효한 시간 만 허용

DateFormat fmt = new SimpleDateFormat("HH:mm"); 
Scanner keyboard = new Scanner(System.in); 

try { 
    String input = keyboard.nextLine(); 
    Date theDate = fmt.parse(input); 
    System.out.println(theDate.toString()); 
} catch (ParseException e) { 
    System.out.println("Incorrect format!"); 
    e.printStackTrace(); 
} 

단어를 입력하면 실제로 예외가 발생합니다. 그러나, 내가 234234:2342342과 같은 것을 타이핑하면, 실제적으로 그 시간과 분이 얼마나 많은 날이 몇일인지를 알아 내고, 실제 날짜를 출력하는 수학을 계산합니다. 예를 들어, 주어진 입력 :

input: 23423423:232323 
output: Fri Jul 29 07:03:00 PDT 4642 

예외로 취급하는 방법이 있는지 궁금합니다. 따라서 형식 지정자가 지정하는 내용 (H 0-23 및 m 0-59) 만 허용하고,이 경계 내에 있지 않으면 예외를 던지거나 알 수있는 방법이 필요합니다. 내가 알고 싶은 것은 내가 사용하고있는 포맷터 클래스에서 이것을 수행하는 방법이 있는지 아니면 Scanner 클래스를 사용하여 수행해야하는지 (어떻게?), 아니면 구문 분석 및 유효성 검사 코드를 직접 작성해야하는지 여부입니다. . 내가 완전히 틀린이 접근인가? 나는 현재 가능성을 시험 중입니다. 더 나은 방법이 있다면 알려주세요.

감사합니다.

답변

7

DateFormat 님의 setLenient 메서드를 사용하여 알아 냈습니다. 이제 형식에 맞지 않는 아무것도 입력

fmt.setLenient(false); 

(시간 = 0 23 분으로는 = 0 ~ 59)이 예외 :

+2

나는 당신이 자기를 얻을에 대한라고 생각을 던졌습니다 -Learner badge :) – Dolph

관련 문제