2014-11-21 4 views
0

현재 날짜 (및 시간)를 파싱하여 기원부터 밀리 초로 변환하려고합니다. 나는 다음과 같은 코드를 구문 분석하여 SimpleDateFormat을 사용하고이를 위해유효성 검사를 사용하여 날짜를 구문 분석합니다.

:

public static long parseDate(String date) { 
    // Parse 
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.US); 
    Date parsedDate = format.parse(date); 

    // Get milliseconds 
    Calendar cal = new GregorianCalendar(); 
    cal.setTime(parsedDate); 
    return cal.getTimeInMillis(); 
} 

나는 주위 재생이 SimpleDateFormat의이 1969년 11월 30일로 구문 분석 1970-00-00의 구문 분석을 허용한다는 것을 발견했다. 그것에 대해 생각하면 완전히 이해가됩니다. 파서가 모든 것을 "합쳐서"1969 년이 실제로 '1969-11-30'으로 이해되고 0 몬트로 '일년 오버플로'가 발생하지 않도록 할 때. 불행히도이 날짜가 유효하지 않음을 (적어도 날짜를 이해함에 따라) 변경하지 않습니다.

타사 라이브러리 또는 Java 8 (대상이 Android 임)을 사용하지 않고 유효성을 추가하는 방법이 있습니까? 아니면 정규식과 유효성 검사를 손으로해야합니까?

미리 감사드립니다. 즉, 누군가가 따라 실수를 한단다 경우, 그래서 내가이 질문을 제거하지 마십시오

format.setLenient(false); 

:

답변

1

어 나는

대답은으로 관대 플래그를 사용하지 않도록하는 것입니다 ...이 질문을 게시 한 것은 매우 유감스럽게 생각한다 이것은 이것을 바꾸는 방법을 알아내는 데 몇 시간을 소비 할 필요가 없습니다 ... 희망이 도움이됩니다!

또한이 플래그가 기본적으로 사용되는 이유는 무엇입니까?

관련 문제