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 

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(); 
  • ¿Cómo puedo agregar un nuevo botón en el widget del selector de fechas en android?
  • TimePicker - ¿Cómo obtener AM o PM?
  • Android: ¿Cambia el separador de tiempo en TimePicker estándar?
  • TimePickerDialog y AM o PM
  • Selector de tiempo que muestra el tiempo como 4: 7 en lugar de 04:07
  • Obtener el valor del selector de fecha y hora a partir de un solo fragmento de diálogo y establecerlo en EditText
  • TimePicker hora no se actualiza después de cambiar a 24h
  • Cómo establecer un intervalo de minutos personalizado en TimePickerDialog en Android
  • Android - ¿Cómo puedo cambiar el textColor en un TimePicker?
  • Android TimePicker (Estilo de rueda) no responde correctamente a los gestos de desplazamiento dentro de ScrollView
  • ¿Cómo implementar android Minutos-Segundos selector?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.