2011-10-06 8 views
0

Calllog에서 날짜를 수집하고 있지만 날짜에 문제가 있습니다. 나는 숫자의 형식을 지정하기 위해 simpleedateformat을 사용했지만, 잘못된 데이터를 얻었습니다 : 1903 년에서 1948 년까지, 그리고 1954 년부터 1936 년까지.전화 로그의 Android 날짜가 이상한 형식이됩니다.

final Context context = getApplicationContext(); 
    final String[] projection = null; 
    final String selection = android.provider.CallLog.Calls.NUMBER + "='+3620455351684'"; 
    final String[] selectionArgs = null; 
    final String sortOrder = android.provider.CallLog.Calls.DATE + " DESC"; 
    Cursor c = null; 
    try{ 
     c = context.getContentResolver().query(
        android.provider.CallLog.Calls.CONTENT_URI, null, selection, null, sortOrder); 
     while (c.moveToNext()) { 
      String callLogID = c.getString(c.getColumnIndex(android.provider.CallLog.Calls._ID)); 
      int numberColumn = c.getColumnIndex(android.provider.CallLog.Calls.NUMBER); 
      int dateColumn = c.getColumnIndex(android.provider.CallLog.Calls.DATE); 
      int typeColumn = c.getColumnIndex(android.provider.CallLog.Calls.TYPE); 
      int outgoingtypeColumn = c.getColumnIndex(android.provider.CallLog.Calls.TYPE + "='2'"); 
      int durationColumn = c.getColumnIndex(android.provider.CallLog.Calls.DURATION); 
      int person = c.getColumnIndex(android.provider.CallLog.Calls.CACHED_NAME); 

      int duration = c.getInt(durationColumn); 
      int callDate = c.getInt(dateColumn); 
      int callType = c.getInt(typeColumn); 
      String number = c.getString(numberColumn); 
      String personname = c.getString(person); 

      SimpleDateFormat datePattern = new SimpleDateFormat ("yyyy-MM-dd");; 
      datePattern.setTimeZone(TimeZone.getTimeZone("GMT")); 
      String date_str = datePattern.format(new Date(callDate*1000L)); 

      arr_allcallsduration.add(Integer.toString(duration)); 
      arr_calls.add(Integer.toString(duration) + " : " + number + " : " + date_str); 
     } 

    }catch(Exception ex){ 
    }finally{ 
     c.close(); 
    } 

출력 :

56 : 3620455351684 : 1948년 8월 2일

425 : 3620455351684 : 1947년 6월 17일

337 이것은 내가 사용하고있는 코드입니다 : 3620455351684 : 1947년 6월 13일

답변

1

나는 해결책을 찾아 냈다. callDate는 한 선언해야합니다

long callDate = c.getLong(dateColumn);

또 다른 수정 :
String date_str = datePattern.format(new Date(callDate));

희망이 다른 사람을 도움이!