0

내가 원하는 것 :Android에서 연락처의 생일을 String에서 DateFormat으로 올바르게 구문 분석하는 방법은 무엇입니까?

오늘 내 연락처가 생일을 맞았는지 확인하고 싶습니다.

이미 휴대 전화의 연락처 목록을 스캔하여 String 각 생일을 얻을 수 있습니다 : 나는 지금까지 무엇을 가지고

.

문제가 무엇 :는 생일의 DateFormat에 올 때 세 가지 경우가 있습니다

.

  1. 사례 : 나는 일만 알고 있지만,은 아닙니다. 이 경우 저장된 생일 String은 다음과 같습니다 : --MM-dd. 나는 이것을 String 길이로 해석하여 SimpleDateFormat으로 정의 할 수있다.
  2. 사례 : 나는 또한 연도를 알고 있습니다. 이 경우 99 %의 저장된 생일 String은 다음과 같습니다 : yyyy-MM-dd. 나도 이걸 다룰 수있어.
  3. 사례 : 나는 또한 을 알고 있지만 저장된 생일 Stringdd.MM.yyyy과 같습니다. 이 길이는 위의 길이와 같으므로 길이를 사용하는 두 가지를 구분할 수 없습니다.

    왜 연락처의 생일이 다른 DateFormat들과 함께 저장됩니다 : 내가 알고 싶은 무엇

? 이것은 Locale에 따라 달라 집니까? 나는 독일어와 영어 (미국) Locale으로 테스트했고 그 결과는 같았다. 나 또한 다른 DateFormat (사례 3의) 연락처가있는 생일을 삭제하고 추가했습니다. 이전과 같이 저장됩니다. :// 모든 종류의 DateFormat을 만들지 않고 간단하고 우아한 방법으로 저장된 생일에 가능한 모든 DateFormat을 처리하는 방법이 있습니까? 사전에

감사합니다, kaolick 우리가 알고 일단 문자열에서 3 번째 문자를 기반으로 간단한

답변

0

나는 내 자신의 질문에 대답하기 싫어하지만 악의 뿌리 발견하는 경우 3

DateFormat 그 이유는 그것을 알아낼 걸 렸어요하지만 설명하기가 용이합니다. 내 기기에 Skype가 설치되어 있고이 두 연락처가 생일을 입력했기 때문입니다. 그러나 Skype는 다른 DateFormat (사례 3의 사례)을 사용 중입니다. 나는 로그 파일을 조사해 보았고 두 연락처가 "보통"연락처 앱의 케이스 2와 같은 생일 항목을 가지고 있다는 것을 알았습니다.

문제가 해결되었습니다. :-D

0

뭔가 다른 경우가 있다면 당신이 이것을 수정해야 할 경우 1

private static SimpleDateFormat MMddFormat = new SimpleDateFormat("--MM-dd"); 
private static SimpleDateFormat ddMMyyyyFormat = new SimpleDateFormat("dd-MM-yyyy"); 
private static SimpleDateFormat yyyyMMddFormat = new SimpleDateFormat("yyyy-MM-dd"); 

private Date Format(String dateString) throws ParseException { 
    // possible formats, --mm-dd, yyyy-mm-dd, dd-mm-yyyy 
    if (dateString == null || dateString.isEmpty()) 
     return null; 
    switch (dateString.length()) { 
    case 7: 
     return MMddFormat.parse(dateString); 
    case 8: 
     return (dateString.charAt(2) == '-' ? ddMMyyyyFormat : yyyyMMddFormat).parse(dateString); 
    } 
    return null; 
} 

아니다 명백하게.

+0

나쁘지 않은 생각입니다. 그러나 이것은 'MM-dd-yyyy'와 같은 4 번째 형식의 생일이 있다면 작동하지 않을 것입니다. – kaolick

+0

내 생일이 언제 어떤 형태인지 모르는 경우 내 생일이 05-06-1992라고 말하면 어떻게 확인할 수 있습니까? 6 일일까요? 또는 6 월 5 일입니까? – Eluvatar

+0

그것이 바로 내가 의미했던 것입니다! 그래서 다른 접근 방식이 필요할 것입니다 ... – kaolick

관련 문제