2010-02-27 3 views
3

두 datetimes를 비교하려고하는데, 나는 그것을 작동시키지 못합니다. 2 개 시간 값의안드로이드 비교 datetime

public void time() { 
     Calendar c11 = Calendar.getInstance(); 
     c11.add(Calendar.DAY_OF_YEAR, 0); 
     c11.set(Calendar.HOUR_OF_DAY, 9); 
     c11.set(Calendar.MINUTE, 0); 
     c11.set(Calendar.SECOND, 0); 

     Calendar c12 = Calendar.getInstance(); 
     c12.add(Calendar.DAY_OF_YEAR, 0); 
     c12.set(Calendar.HOUR_OF_DAY, 9); 
     c12.set(Calendar.MINUTE, 0); 
     c12.set(Calendar.SECOND, 0); 

     c11.getTime(); 
     c12.getTime(); 
     boolean k = c11.equals(c12); 
     if (k==true) 
     { 
      Toast.makeText(
       getContext(), 
       "Wow these two times are the same!", 
       Toast.LENGTH_LONG).show(); 
     } 
    } 
    } 

답변

3
  1. 밀리 세컨드 그래서 평등 비교가 false를 반환하는 것입니다 다릅니다.

  2. 두 캘린더 인스턴스에 모두 0 일을 추가하는 이유는 무엇입니까? 그건 아무것도 안해요.

+0

이유 C11 값은 상이하며, C12는 모두 동일하게 설정된다? – SamB09

+0

아니요 동일한 항목이 아닙니다. 방금 말했듯이 밀리 초는 다릅니다. 양쪽 모두에서 밀리 초를 0으로 설정해야합니다. 현재 밀리 초는 Calendar.getInstance()를 호출 할 때 현재 시간이 무엇이든간에 설정됩니다. –

+0

맞습니까? 그래서이 두 가지를 비교할 수있는 다른 방법이 있습니까? – SamB09

1
public void onDateSelected(DateTime dateSelected) { 
    DateTime currentDateTime = new DateTime(); 

    try{ 
     /* If you want to compare only date from DateTime object then, 
      you can use "yyyy-MM-dd" format and split the string from T like: 
      dateSelected.toString().split("T") and use str1[0] to parse */ 

     SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"); 

     String str1 = dateSelected.toString(); 
     Date selectedDate = formatter.parse(str1); 

     String str2 = currentDateTime.toString(); 
     Date currentDate = formatter.parse(str2); 

     if (selectedDate.compareTo(currentDate)<0) 
     { 
      System.out.println("current date is Greater than my selected date"); 
     } 

    }catch (ParseException e1){ 
     e1.printStackTrace(); 
    } 
} 
+1

더 일반적인 형식으로이 함수의 매개 변수로 형식을 보낼 수 있습니까? public void onDateSelected (DateTime dateSelected, String format) { SimpleDateFormat formatter = 새 SimpleDateFormat (형식); ... } – Fahad

+1

예, 다음과 같이 할 수 있습니다. –

+0

감사합니다 Shujat 도움이 될 것입니다. – Fahad