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í:
- TimePickerDialog y AM o PM 17 respuestas
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.
No estoy seguro de si ayudará, pero estoy trabajando en la misma cosa. Ver mi respuesta aquí TimePickerDialog y AM o PM
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())