2012-11-05 5 views
1

J'ai un problème affichant le AM ​​/ PM correct d'un cycle de sommeil calculé d'une personne. Par exemple, l'utilisateur clique sur son heure d'éveil à 07h00, l'application doit retourner l'heure de sommeil à 23h15. Dans mon application, il affiche 11h15 pas PM.Timepicker incorrect retour de AM/PM android

Pouvez-vous me aider avec ce que je l'ai essayé jusqu'à présent:

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))); 


     } 
    }; 

Toute aide est vraiment apprécié! Merci.

+0

Mettez un point d'arrêt sur cette ligne si (heure> = 12), exécutez votre code jusqu'à ce que vous atteigniez le point d'arrêt. Quelle valeur est l'heure? – Simon

+0

@Simon, [les docs] (http://developer.android.com/reference/android/app/TimePickerDialog.OnTimeSetListener.html) disent que c'est le "hourOfDay". Donc, cela doit être au format 24 heures. – varevarao

+0

Bon point, alors allez-y et répondez. hour = c.set (calendrier.HOUR_OF_DAY); – Simon

Répondre

8

Reportez-vous à la petite discussion avec @Simon ci-dessus dans les commentaires, la variable de calendrier que vous souhaitez définir est Calendar.HOUR_OF_DAY. Here est ce que vous définissez, et obtenir. Vous voulez celui qui est en dessous de ça.

+0

Je vais donc utiliser Calendar.HOUR_OF_DAY? –

+0

Oui. Utiliser le code ci-dessus aurait du sens avec Calendar.HOUR_OF_DAY qui est au format 24 heures; La variable HOUR est dans un format de 12 heures. – varevarao

+0

Merci, désolé pour cette question (im un newbie) où vais-je mettre Calendar.HOUR_OF_DAY dans mon code? –

Questions connexes