Замена AM / PM DateFormat на TimePickerDialog - PullRequest
1 голос
/ 29 августа 2011

У меня есть макет / кнопка и onClick Я получаю TimePickerDialog с текущим временем (ранее определенным из Календарь ):

    RelativeLayout time = (RelativeLayout) findViewById(R.id.time_layout);
    time.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {
            TimePickerDialog dateDialog = new TimePickerDialog(SelectDateTimeActivity.this,
                    TimeSetListener,
                    hours, minutes, false);
            dateDialog.show();
        }
    });

TimePicker находится в режиме 12h - имеет отметку AM / PM . TimeSetListener выглядит как

private TimePickerDialog.OnTimeSetListener TimeSetListener = new TimePickerDialog.OnTimeSetListener() {
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        hours = hourOfDay;
        minutes = minute;
        updateTimeRow();
    }
};

и updateTimeRow () is

private void updateTimeRow() {
    Calendar c = Calendar.getInstance();
    c.set(Calendar.HOUR, hours);
    c.set(Calendar.MINUTE, minutes);

    timeBody.setText("@ " + (String) (DateFormat.format("hh:mm aa", c.getTime())));
}

Проблема в том, что время, установленное в TimePickerDialog 06: 00 PM (что на самом деле 18:00, я проверил через логирование), я получаю 06: 00 AM в моем timeBody textView , Если я установлю его на 06: 00 AM (что на самом деле 06:00) в timeBody textView, я получу 06: 00 PM . Почему?

1 Ответ

3 голосов
/ 03 ноября 2011

Используйте HOUR_OF_DAY вместо HOUR.

c.set(Calendar.HOUR, hours);

Заменить его на:

c.set(Calendar.HOUR_OF_DAY, hours);
...