Android: Réglage du temps dans le sélecteur de temps avec l'heure affichée dans la vue du texte

Dans mon application, je montre le temps dans la vue du texte à 19h00. Sur le clic de la vue de texte, une boîte de dialogue de sélection de temps s'affiche. Dans ce choix de temps, je dois montrer exactement le même temps que ce qui apparait dans la visualisation de texte. Mais, je ne comprends pas comment faire cela.

CODE

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm a"); //int hr = 0; Date date = null; try { date = sdf.parse(resDateArray[3]); } catch (ParseException e) { e.printStackTrace(); } final Calendar calendar = Calendar.getInstance(); calendar.setTime(date); //tp is reference variable for time picker tp.setCurrentHour(calendar.get(Calendar.HOUR)); tp.setCurrentMinute(calendar.get(Calendar.MINUTE)); }//else 

4 Solutions collect form web for “Android: Réglage du temps dans le sélecteur de temps avec l'heure affichée dans la vue du texte”

Vous devez utiliser un SimpleDateFormat pour obtenir un objet Date de votre String . Ensuite, appelez simplement

 picker.setCurrentHour(date.getHours()) 

et

 picker.setCurrentMinute(date.getMinutes()) 

Étant donné que l'objet Date est obsolète, vous devez utiliser un Calendar au lieu de cela. Vous pouvez instancier un Calendar cette manière:

 Calendar c = Calendar.getInstance(); c.setTime(date); picker.setCurrentHour(c.get(Calendar.HOUR_OF_DAY)); picker.setCurrentMinute(c.get(Calendat.MINUTE)); 

Modifier: le code complet

  SimpleDateFormat sdf = new SimpleDateFormat("hh:ss"); Date date = null; try { date = sdf.parse("07:00"); } catch (ParseException e) { } Calendar c = Calendar.getInstance(); c.setTime(date); TimePicker picker = new TimePicker(getApplicationContext()); picker.setCurrentHour(c.get(Calendar.HOUR_OF_DAY)); picker.setCurrentMinute(c.get(Calendar.MINUTE)); 

Si quelqu'un utilisant le format suivant sans utiliser le widget timepicker, utilisez celui-ci.

 mStartTime.setOnClickListener(new OnClickListener() { public void onClick(View v) { new TimePickerDialog(AddAppointmentActivity.this, onStartTimeListener, calendar .get(Calendar.HOUR), calendar.get(Calendar.MINUTE), false).show(); } }); TimePickerDialog.OnTimeSetListener onStartTimeListener = new OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { String AM_PM; int am_pm; mStartTime.setText(hourOfDay + " : " + minute + " " + AM_PM); calendar.set(Calendar.HOUR, hourOfDay); calendar.set(Calendar.MINUTE, minute); } }; 

J'ai créé cette fonction d'aide pour obtenir du temps

  public static void showTime(final Context context, final TextView textView) { final Calendar myCalendar = Calendar.getInstance(); TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { String am_pm = ""; myCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay); myCalendar.set(Calendar.MINUTE, minute); if (myCalendar.get(Calendar.AM_PM) == Calendar.AM) am_pm = "AM"; else if (myCalendar.get(Calendar.AM_PM) == Calendar.PM) am_pm = "PM"; String strHrsToShow = (myCalendar.get(Calendar.HOUR) == 0) ? "12" : myCalendar.get(Calendar.HOUR) + ""; //UIHelper.showLongToastInCenter(context, strHrsToShow + ":" + myCalendar.get(Calendar.MINUTE) + " " + am_pm); textView.setText(strHrsToShow + ":" + myCalendar.get(Calendar.MINUTE) + " " + am_pm); } }; new TimePickerDialog(context, mTimeSetListener, myCalendar.get(Calendar.HOUR), myCalendar.get(Calendar.MINUTE), false).show(); } 

Et Comment obtenir l'heure actuelle dans le format requis, j'utilise le code suivant. // PARAM La date est la date du temps que vous souhaitez formater // PARAM currentFormat de la date // PARAM requiredFormat of date

  public static String getFormattedDate(String date, String currentFormate, String requiredFormate) { //SimpleDateFormat formatActual = new SimpleDateFormat("yyyy - MM - dd"); if (date != null) { SimpleDateFormat formatActual = new SimpleDateFormat(currentFormate); Date dateA = null; try { dateA = formatActual.parse(date); System.out.println(dateA); } catch (ParseException e) { e.printStackTrace(); } //SimpleDateFormat formatter = new SimpleDateFormat("dd MMM, yyyy"); SimpleDateFormat formatter = new SimpleDateFormat(requiredFormate); String format = formatter.format(dateA); System.out.println(format); return format; } else { return ""; } } 

L'utilisation de getFormattedDate est:

  String date = getFormattedDate(dateYouWantToFormate,"hh:mm a","hh:mm"); 

Pour AM / PM, vous devez implémenter une logique pour cela et c'est comme ci-dessous … afin que vous puissiez obtenir la sortie comme vous l'avez mentionné … essayez simplement le code ci-dessous …

 int hr=tp.getCurrentHour(); String a="AM"; if(hr>=12){ hr=hr-12; a="PM"; } String tm=hr+":"+tp.getCurrentMinute()+" "+a; Toast.makeText(MainActivity.this, tm, 500).show(); 
coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.