Формат Android Time Picker

Я использую TimePicker, и в сборщике время отображается в формате 24 hour, что хорошо, но когда я select...

Получение - 9:5 PM

Требование 1 - 09:05 PM

Требование 2 - 21:05

  case DIALOG_TIME:
    final Calendar c = Calendar.getInstance();
    int hour = c.get(Calendar.HOUR_OF_DAY);
    int minute = c.get(Calendar.MINUTE);

    // Create a new instance of TimePickerDialog and return it
    return new TimePickerDialog(this, lisTime, hour, minute,
            DateFormat.is24HourFormat(FormActivity.this));

   .......


    TimePickerDialog.OnTimeSetListener lisTime = new TimePickerDialog.OnTimeSetListener() {

        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            // TODO Auto-generated method stub
            String hour = "";
            String meridiem = "";
            Calendar datetime = Calendar.getInstance();
            datetime.set(Calendar.HOUR_OF_DAY, hourOfDay);
            datetime.set(Calendar.MINUTE, minute);

            if (datetime.get(Calendar.AM_PM) == Calendar.AM)
                meridiem = "AM";
            else if (datetime.get(Calendar.AM_PM) == Calendar.PM)
                meridiem = "PM";

            hour = (datetime.get(Calendar.HOUR) == 0) ?"12":String.valueOf(datetime.get(Calendar.HOUR));
            editTime.setText(hour + ":" + String.valueOf(minute) + " " + meridiem);
        }
    };

Итак, где я должен внести изменения в свой код, чтобы это сделать!


person Sun    schedule 25.02.2015    source источник


Ответы (1)


Для требования 1: используйте приведенный ниже код:

String date="9:5 PM";

        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("hh:mm aa",Locale.getDefault());

        try {
            Log.e("",""+new SimpleDateFormat("HH:mm",Locale.getDefault()).format(simpleDateFormat.parse(date)));

        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

Для требования 2: используйте приведенный ниже код:

 private String pad(int value){

            if(value<10){
                return "0"+value;
            }


            return ""+value;            
        }

ОТРЕДАКТИРОВАНО:

Заменить строки ниже

            editTime.setText(hour + ":" + String.valueOf(minute) + " " + meridiem);

to

String date=pad(Integer.parseInt(hour)) + ":" + pad(minute) + " " + meridiem;

         SimpleDateFormat simpleDateFormat=new SimpleDateFormat("hh:mm aa",Locale.getDefault());

        try {
            editTime.setText(""+new SimpleDateFormat("HH:mm",Locale.getDefault()).format(simpleDateFormat.parse(date)));

        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
person droidd    schedule 25.02.2015
comment
ждать. я изменяю решение. - person droidd; 25.02.2015
comment
Я отредактировал решение. если у вас все еще есть какие-либо вопросы, пожалуйста, дайте мне знать. - person droidd; 25.02.2015
comment
спасибо, теперь я получаю результат в 24-часовом формате, но что, если я также хочу получить такой результат: 21:05, используя ваш код: 21:05 - person Sun; 25.02.2015
comment
тогда вам не нужно конвертировать. переменная даты уже имеет значение, которое вам нужно. Просто значение даты с использованием журнала - person droidd; 25.02.2015