Android: Establecer el tiempo en el selector de tiempo con el tiempo mostrado en la vista de texto

En mi aplicación, estoy mostrando el tiempo en la vista de texto como 07:00 PM. Al hacer clic en la vista de texto, aparece un cuadro de diálogo de selección de tiempo. En ese selector de tiempo, tengo que mostrar exactamente el mismo tiempo que lo que aparece en textview. Pero, no estoy consiguiendo cómo hacer eso.

CÓDIGO

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: Establecer el tiempo en el selector de tiempo con el tiempo mostrado en la vista de texto”

Debe utilizar un SimpleDateFormat para obtener un objeto Date de su String . Entonces simplemente llame

 picker.setCurrentHour(date.getHours()) 

y

 picker.setCurrentMinute(date.getMinutes()) 

Dado que el objeto Date está obsoleto, debe utilizar un Calendar lugar de hacerlo. Puede instanciar un Calendar esa manera:

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

Editar: el código completo

  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 alguien utiliza el siguiente formato que es sin usar el widget timepicker use este ..

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

He creado esta función auxiliar para obtener tiempo

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

Y cómo conseguir la hora actual en formato requerido, utilizo código siguiente. // PARAM Fecha es la fecha de tiempo que desea formatear // PARAM currentFormat of 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 ""; } } 

El uso de getFormattedDate es:

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

Para AM / PM tienes que implementar una lógica para eso y eso es como a continuación .. para que puedas obtener la salida como mencionaste … solo prueba debajo del código …

 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(); 
  • TimePicker NullPointerException en ICS
  • Android TimePicker Botón AM / PM que no invoca onTimeChanged
  • OnTimeSet también se llama al descartar TimePickerDialog
  • Consiga tiempo usando el selector de tiempo android
  • Cómo cambiar el color de las líneas de TimePicker en el tema Appcompat?
  • Android: ¿cómo tener este tipo de selección de tiempo?
  • Datepicker y timepicker - establece valores máximos y mínimos en android
  • Timepicker de los desarrolladores de Android no se permite estática
  • Cómo establecer un intervalo de minutos personalizado en TimePickerDialog en Android
  • BetterPickers sin una biblioteca de soporte
  • Excepción de puntero nulo de TimePicker al pulsar los botones más o menos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.