2012-01-11 3 views
1

내 datepicker에서 일/월/년을 얻으려고합니다. 나는 월간이 결코 정확하지 않다는 문제가있다. 아래 코드를 제공합니다. 달은 정확하지만 월이 12 월이면 실패합니다. 그 날은 결코 정확하지 않습니다.안드로이드가 datepicker를 벗어난 데이터를 사용합니다

public class myOnDateChangedListener implements OnDateChangedListener { 

    public void onDateChanged(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 
     if (view.getId() == R.id.datePicker1) { 
      startDay = view.getDayOfMonth(); 
      if(view.getMonth() == 11){ 
       startMonth = 12; 
      }else{ 
      startMonth = (view.getMonth() + 1); 
      } 
      startYear = view.getYear(); 

     } 
     if (view.getId() == R.id.datePicker2) { 
      endDay = view.getDayOfMonth(); 
      if(view.getMonth() == 11){ 
       endMonth = 12; 
      }else{ 
      endMonth = (view.getMonth() + 1); 
      } 

      endYear = view.getYear(); 

     } 

    } 

} 
+0

문제가 정확히 무엇인지 말씀해 주시겠습니까? 12 월을 선택할 때 응용 프로그램이 중단되거나 잘못된 값을 반환하면 반환되는 값은 무엇입니까? –

+0

12 월을 선택하면 mysql 데이터베이스의 월이 00으로 설정되고 그 날도 올바르지 않습니다. –

답변

2

왜 메서드에서 전달 된 값이 아닌 뷰 값을 사용합니까?

public void onDateChanged(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 
     if (view.getId() == R.id.datePicker1) { 
      startDay = dayOfMonth; 
      startMonth = monthOfYear + 1; 
      startYear = year; 
     } 
     if (view.getId() == R.id.datePicker2) { 
      endDay = dayOfMonth; 
      endMonth = monthOfYear + 1; 
      endYear = year; 
     } 

    } 

편집 : 또한 달 == (11)의 특별한 경우에 대한 필요성이 코드 (자신의 수정을) 시도하지 귀하의 코멘트를 읽은 후 당신이 얻는 문제는 다른 혼란이 될 수 느낀다 당신 편 :

public Date(int year, int month, int date) 

월 1,900번째 년의 1 일부터 시작하는 날짜를 초기화 : 나는 this처럼가는 자바 Date 클래스의 생성자는 사실을 의미한다. 경고 : 달은 0에서 11 사이이며 하루는 1에서 31 사이입니다. 생성자를 살펴보십시오. 문제가 DatePicker 자체에 있는지 또는 Java 코드에서 문제가 발생했는지 여부를 감지하려면 로깅을 시도하여 원인 범위를 좁 힙니다.

관련 문제