2014-12-11 9 views
0

명령 줄에서 실행되는 응용 프로그램이 있습니다. 매개 변수 중 하나로서 응용 프로그램이 일부 데이터를 처리하기 시작해야하는 날짜가 있습니다. 날짜는 yyyy-MM-ddyyyy-MM-dd HH:mm:ss의 두 가지 형식을 가질 수 있습니다. 하지만 두 번째 형식의 날짜 (예 : 2012-04-18 15:05:08)로 응용 프로그램을 실행하면 -dd와 HH 사이의 공백이 매개 변수 구분 기호로 사용됩니다. 예외가 발생합니다.명령 줄의 날짜

No argument is allowed: 15:05:08 

날짜를 따옴표로 묶을 수 있습니다. 그러나 포장하지 않고 그렇게 할 수있는 다른 방법이 있습니까?

명령 줄 인수를 구문 분석 할 때 나는 org.kohsuke.args4j 라이브러리를 사용하고 있습니다. 제안 사항이 있으십니까?

+0

는 YYYY-MM-dd_HH에 형식을 변경할 수 널 포인터 예외를 방지하기 위해 배열에 약간의 유효성 검사를 추가? 그렇지 않으면 arg [0]과 arg [1]을 연결할 수 있습니다. – svz

+0

재미있는 아이디어입니다. 감사합니다. – user2281439

답변

0

날짜에 공백이 있으면 (예 : 2014-12-11 13:08:08) 명령 줄에 따옴표를 붙여야합니다. 그렇지 않으면 명령 프롬프트에 두 개의 별도 인수로 표시됩니다. 날짜와 시간은 두 개의 인수로 처리 될 수 있도록

당연히 당신은 당신의 프로그램을 변경할 수 있습니다

public static void main(String[] args) { 
    String date = args[0]; 
    String time = args[1]; 

    System.out.println("The date is: " + date); 
    System.out.println("The time is: " + time); 

    String dateTime = date + " " + time; 
    System.out.println("The date and time: " + dateTime); 
} 

이 (당신은 args4j에 그렇게하는 방법을 스스로 찾을 수 있습니다). mm : ss로

+0

편집자 : 내 대답을 편집하지 말고 내가 작성한 것을 완전히 바꾸지 마십시오. – Jesper

0

그냥

public static void main(String[] args) { 
    SimpleDateFormat sdf; 
    String in; 
    if(args.length = 1) { 
    in = args[0]; 
    sdf = new SimpleDateFormat("yyyy-MM-dd"); 
    } else if(args.lenth = 2) 
    in = args[0] + " " + args[1]; 
    sdf = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); 
    } 


    if(args.length > 0) { 
    Date date = sdf.parse(in); 
    System.out.println("date:" + date); 
    } 
    } 
+0

네,하지만 프로그램에 커맨드 라인 인자가 많이 있습니다.이 매개 변수와 관련된 하나 또는 두 개의 인자가 있는지 확인하기 위해 약간의 혼란이있을 것입니다. 그러나 또한 아이디어에 감사드립니다. – user2281439