2012-11-05 2 views
1

사람의 계산 된 수면주기의 올바른 AM/PM을 표시하는 데 문제가 있습니다. 예를 들어 사용자가 오전 7시에 깨우는 시간을 클릭하면 앱에서 오후 11시 15 분에 잠자기 시간을 반환해야합니다. 내 응용 프로그램에서는 오전 11시 15 분을 표시합니다.Timepicker AM/PM의 잘못된 리턴 android

당신은 내가 지금까지 시도 무엇을 도와 수 :

private TimePickerDialog.OnTimeSetListener timePickerListener = 
      new TimePickerDialog.OnTimeSetListener() { 

     public void onTimeSet(TimePicker view, int selectedHour, 
       int selectedMinute) { 
      // Gets current time 
      Calendar c = Calendar.getInstance(); 

      hour = selectedHour; 
      minute = selectedMinute; 

      // set waking time into textview 
      StringBuilder sb = new StringBuilder(); 
      if(hour>=12){      
       sb.append(hour-12).append(":").append(minute).append(" PM"); 
      }else{ 
       sb.append(hour).append(":").append(minute).append(" AM"); 
      } 
      wakingtime.setText(sb); 

      // Assign hour set in the picker 
      c.set(Calendar.HOUR, selectedHour); 
      c.set(Calendar.MINUTE, selectedMinute); 

      // Have Calendar calculate the substraction of hours and minutes 
      c.add(Calendar.HOUR, SUB_HOUR); 
      c.add(Calendar.MINUTE, SUB_MINUTE); 

      // Get the hour and the minute calculated 
      hour = c.get(Calendar.HOUR); 
      minute = c.get(Calendar.MINUTE); 

      StringBuilder sb2 = new StringBuilder(); 
      if(hour>=12){      
       sb2.append(hour-12).append(":").append(minute).append(" PM"); 
      }else{ 
       sb2.append(hour).append(":").append(minute).append(" AM"); 
      } 
      answer.setText(sb2); 

      // set current time into textview 
      //answer.setText("You must go to bed at " + new StringBuilder().append(pad(hour)) 
       // .append(":").append(pad(minute))); 


     } 
    }; 

어떤 도움이 정말 감사합니다! 감사.

+0

(시간> = 12)이 줄에 중단 점을두면 중단 점에 도달 할 때까지 코드를 실행하십시오. 시간당 가치는 무엇입니까? – Simon

+0

@Simon, [docs] (http://developer.android.com/reference/android/app/TimePickerDialog.OnTimeSetListener.html)는 "hourOfDay"라고 말합니다. 24 시간 형식이어야합니다. – varevarao

+0

좋은 지적입니다. 그래서 계속 대답하십시오. 시간 = c.set (Calender.HOUR_OF_DAY); – Simon

답변

8

위의 @Simon에 대한 설명에서 의견을 참조하십시오. 설정할 Calendar 변수는 Calendar.HOUR_OF_DAY입니다. Here은 설정하고 가져 오는 것입니다. 당신은 그 아래에있는 것을 원합니다.

+0

그래서 캘린더를 사용하겠습니다 .HOUR_OF_DAY? –

+0

예. 위의 코드를 사용하면 24 시간 형식의 Calendar.HOUR_OF_DAY를 사용할 수 있습니다. HOUR 변수는 12 시간 형식입니다. – varevarao

+0

감사합니다.이 질문에 대해 사과드립니다 (초보자 용). 내 코드에 Calendar.HOUR_OF_DAY를 어디에 두겠습니까? –