Как установить значение EditText как 13:00 или 8:00?

Я использую этот код, чтобы получить время из средства выбора времени. . .

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
        case TIME_DIALOG_ID:
            return new TimePickerDialog(this,mTimeSetListener, Calendar.HOUR, Calendar.MINUTE, false);
    }
    return null;
}

private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            reminderSetTime.setText(""+hourOfDay+":"+minute+"");
            Toast.makeText(ImportantDateReminderActivity.this, "Time is="+hourOfDay+":"+minute, Toast.LENGTH_SHORT).show();
        }
    };

static final int TIME_DIALOG_ID = 0;

И для отображения TimePicker я использую код ниже:

    case R.id.reminderTime:
            showDialog(TIME_DIALOG_ID);
            break;

При этом я не получаю должного значения времени. Мне нужно значение, например, 13:00 и 10:00, но я не получаю PM/AM, и если время больше 12, то я получаю 13,14. . . как фигура. вместо этого я хочу цифру от 1 до 12.

Итак, как установить это значение ?? Спасибо.


person Shreyash Mahajan    schedule 23.12.2011    source источник
comment
Странно, потому что is24HourView имеет значение false. Любой журнал?   -  person A.Quiroga    schedule 23.12.2011


Ответы (3)


private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            mHour = hourOfDay;
            mMinute = minute;
            if(mHour==12)
                btnFromTime.setText(new StringBuilder().append("12").append(":").append(pad(minute)+" PM"));
        else
            updateTimeDisplay();
        }
    };

это работает для меня...

и использовать это

private void updateTimeDisplay() {

        try {
            Format formatter;
            SimpleDateFormat df = new SimpleDateFormat("hh:mm");
            Date d = df.parse(mHour + ":" + mMinute);
            Calendar gc = new GregorianCalendar();
            gc.setTime(d);
            gc.add(Calendar.HOUR, 0);
            Date d2 = gc.getTime();
            formatter = new SimpleDateFormat("hh:mm a");
            String time = formatter.format(d2);

            btnFromTime.setText(time);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
person NikhilReddy    schedule 23.12.2011
comment
Что такое объект pad beforeminute? Я не понимаю. - person Shreyash Mahajan; 23.12.2011
comment
public String pad(int c) { if (c ›= 10) return String.valueOf(c); иначе вернуть 0 + String.valueOf(c); } - person NikhilReddy; 23.12.2011

Вы пробовали: TimePicker.setIs24HourView(false) ?

person teoREtik    schedule 23.12.2011

Лучшей практикой Android является делать все, что хочет пользователь; что установлено в настройках Android:

Как получить выбранный пользователем формат даты в Android?

Проверить TIME_12_24

Ответьте на ваш вопрос, вы можете использовать класс DateFormat для достижения того, чего хотите.

person Jordi    schedule 23.12.2011