TimePicker - как получить AM или PM?
Я хочу установить будильник на основе пользовательского выбора в TimePicker. TimePicker установлен в режим AM/PM. Чтобы узнать, хочет ли пользователь, чтобы его будильник установил 10 или 10 часов, как мне получить значение AM/PM?
Слушатель TimePickerDialog.OnTimeSetListener
проходит только часы и минуты.
Ответы
Ответ 1
Над ответами правы я нашел самый простой способ найти 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 );
}
};
Ответ 2
Вы можете получить AM/PM от Timepicker, используя следующий метод.
Timepicker - это группа view.That, почему мы можем получить его индекс просмотра child 2, который демонстрирует, что AM/PM на самом деле является кнопкой. Поэтому мы можем получить его текст.
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();
}
};
Ответ 3
При обратном вызове
public void onTimeSet(TimePicker view, int hourOfDay, int minute)
вызов ниже функции
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);
}
Функции возвращают что-то вроде этого 1:12 PM
Ответ 4
Я бы предпочел оставить это в качестве комментария, но у меня недостаточно репутации. Самым кратким способом получения AM или PM является использование тернарного оператора:
String am_pm = (hourOfDay < 12) ? "AM" : "PM";
Ответ 5
Не уверен, что это поможет, но я как бы работаю над одним и тем же. Смотрите мой ответ здесь
TimePickerDialog и AM или PM
Ответ 6
Я сделал это с помощью Calendar, и это должно работать на всех версиях:
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 );
}
Обратите внимание на использование Calendar.HOUR_OF_DAY
и Calendar.HOUR
, если вы перейдете к документации обо всех, кого вы знаете, трюк.
Ответ 7
Я думаю, что обратный вызов будет вызываться с часом в 24-формате, потому что. Диалог использует TimePicker
внутренне. И TimePicker
имеет getCurrentHour moethod, который возвращает час в формате 0-23.
Ответ 8
например:
TimePicker sellerTime = (TimePicker) findViewById (R.id.sellerTime);
Integer.toString(((продавецTime.getCurrentHour(). intValue()) > 12)? ((sellerTime.getCurrentHour(). intValue()) - 12):
(SellerTime.getCurrentHour(). IntValue())
Ответ 9
Здесь я беру текущую дату и время из системы и обновляю ее с диалоговым окном даты и времени
private int mMonth, mYear, mDay, mHour, mMin;
public static final int DTPKR = 1;
public static final int TMPKR = 2;
//Получение текущей даты и времени в диалоговом окне DatePicker
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);
}
Теперь создайте диалоги и обновите значения
// Создание диалогов
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();
}
};