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
- ¿Cómo se utilizan los skins personalizados de Datepicker y Timepicker?
- Android: Cómo obtener el tiempo de un TimePicker cuando se escribe en
- Las entradas de AppCompatSpinner no abren TimePickerDialog al seleccionarla por segunda vez. Por favor ver detalles
- ¿Hay alguna forma de usar cancel en Android JellyBean TimePickerDialog?
- ¿Es posible quitar el botón AM / PM de TimePicker?
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
- Android TimePicker no se muestra bien en modo horizontal
- Timepicker de los desarrolladores de Android no se permite estática
- Cómo cambiar el color predeterminado del diálogo DatePicker y TimePicker en Android?
- Cómo mostrar dos números en minuto en android
- TimePicker NullPointerException en ICS
- Usar TimePicker o DatePicker en la pantalla Preferencias en Android
- Android TimePickerDialog set max time
- Establecer fecha y hora seleccionador de fecha y hora en android
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();
- Valores de localización de Android – ** nombres de carpeta
- Excepción de puntero nulo en mapFragment.getMapAsync (this) al inicializar google map