timepickermode studio seleccionar pickers personalizar library implementar fecha ejemplo and android timepicker

studio - time picker android library



TimePicker-¿Cómo obtener AM o PM? (9)

Aquí estoy tomando la fecha y hora actual del sistema y actualizándolas con el diálogo de selección de fecha y hora

private int mMonth,mYear,mDay,mHour,mMin; public static final int DTPKR = 1; public static final int TMPKR = 2; // Getting the current date and time into DatePicker dialog public void getCurrentDate(){ final Calendar c = Calendar.getInstance(); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); } public void getCurrentTime(){ final Calendar c = Calendar.getInstance(); mHour = c.get(Calendar.HOUR_OF_DAY); mMin = c.get(Calendar.MINUTE); }

Ahora cree los diálogos y actualice los valores // Creando diálogos

protected Dialog onCreateDialog(int id) { switch (id) { case DTPKR: return new DatePickerDialog(this,lisDate, mYear, mMonth, mDay); case TMPKR: return new TimePickerDialog(this,lisTime,mHour, mMin, false); } return null; } //setting date and updating editText DatePickerDialog.OnDateSetListener lisDate = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; mMonth = monthOfYear; mDay = dayOfMonth; etDate.setText(new StringBuilder() .append(mDay).append("/").append(mMonth+1).append("/").append(mYear)); getCurrentDate(); } }; //setting time and updating editText TimePickerDialog.OnTimeSetListener lisTime=new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { mHour=hourOfDay; mMin=minute; String AM_PM ; if(hourOfDay < 12) { AM_PM = "AM"; } else { AM_PM = "PM"; mHour=mHour-12; } etTime.setText(mHour+":"+mMin+" "+AM_PM); getCurrentDate(); } };

Esta pregunta ya tiene una respuesta aquí:

Quiero establecer una alarma basada en la selección de un usuario en TimePicker. TimePicker está configurado en el modo AM / PM. Para saber si un usuario desea que su alarma se configure en 10 AM o 10 PM, ¿cómo debo obtener el valor AM / PM?

El oyente TimePickerDialog.OnTimeSetListener solo pasa horas y minutos.


Creo que la devolución de llamada se llamará con hora en formato 24 porque. El diálogo utiliza TimePicker internamente. Y TimePicker tiene el getCurrentHour getCurrentHour, que devuelve hora en formato 0-23.


En devolución de llamada de

public void onTimeSet(TimePicker view, int hourOfDay, int minute)

llamar por debajo de la función

private String getTime(int hr,int min) { Time tme = new Time(hr,min,0);//seconds by default set to zero Format formatter; formatter = new SimpleDateFormat("h:mm a"); return formatter.format(tme); }

Las funciones devuelven algo como esto 1:12 PM


Hubiera preferido dejar esto como un comentario, pero no tengo suficiente reputación. De lejos, la forma más sucinta de obtener AM o PM es usar el operador ternario:

String am_pm = (hourOfDay < 12) ? "AM" : "PM";


Las respuestas de arriba son correctas, encontré la forma más sencilla de encontrar AM PM.

TimePickerDialog.OnTimeSetListener onStartTimeListener = new OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { String AM_PM ; if(hourOfDay < 12) { AM_PM = "AM"; } else { AM_PM = "PM"; } mStartTime.setText(hourOfDay + " : " + minute + " " + AM_PM ); } };


Lo hice usando el calendario, y eso debería funcionar en todas las versiones:

public void onTimeSet(TimePicker view, int hourOfDay, int minute){ String am_pm = ""; Calendar datetime = Calendar.getInstance(); datetime.set(Calendar.HOUR_OF_DAY, hourOfDay); datetime.set(Calendar.MINUTE, minute); if (datetime.get(Calendar.AM_PM) == Calendar.AM) am_pm = "AM"; else if (datetime.get(Calendar.AM_PM) == Calendar.PM) am_pm = "PM"; String strHrsToShow = (datetime.get(Calendar.HOUR) == 0) ?"12":Integer.toString( datetime.get(Calendar.HOUR) ); ((Button)getActivity().findViewById(R.id.btnEventStartTime)).setText( strHrsToShow+":"+datetime.get(Calendar.MINUTE)+" "+am_pm ); }

Observe el uso de Calendar.HOUR_OF_DAY y Calendar.HOUR si va a la documentación de ambos, sabrá el truco.



Puede obtener AM / PM de Timepicker usando el siguiente método. Timepicker es un grupo de vista. Por eso podemos obtener su índice de vista secundario 2 que demuestra que AM / PM es en realidad un botón. Así podemos obtener su texto.

Mycallback=new OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { ViewGroup vg=(ViewGroup) view.getChildAt(0); Toast.makeText(TimePickerDemoActivity.this, hourOfDay+":"+minute+":"+((Button)vg.getChildAt(2)).getText().toString(), 5000).show(); } };


p.ej :

TimePicker sellerTime = (TimePicker) findViewById(R.id.sellerTime); Integer.toString(((sellerTime.getCurrentHour().intValue()) > 12) ? ((sellerTime.getCurrentHour().intValue()) - 12) : (sellerTime.getCurrentHour().intValue())