TimePicker — как установить AM или PM?

Я новичок в Android, в моем приложении у меня есть таймер, мне нужно программно установить значения часов, минут, AM/PM.

Значение времени «11:11: AM». В этом я установил час и время, и оно работает нормально. но я не знаю, как установить значения AM / PM.

код:

  if (!(mTime == null)) {
                String timme = mTime;
                String[] time = timme.split(":");
                int hour = Integer.parseInt(time[0].trim());
                int min = Integer.parseInt(time[1].trim());
                String amPm = ((time[2].trim()));

                mTimePicker.setIs24HourView(false);
                mTimePicker.setHour(hour);
                mTimePicker.setMinute(min);
            }

Изображение:

введите здесь описание изображения

Он всегда показывает «AM», даже если в строке есть «PM». Может ли кто-нибудь помочь мне исправить это.


person Zhu    schedule 29.06.2018    source источник
comment
Это может быть полезно: stackoverflow.com/questions/11381985/   -  person AMACB    schedule 29.06.2018


Ответы (4)


Android автоматически устанавливает AM/PM на основе времени, которое предоставляется в 24-часовом формате. Чтобы уточнить:

Вы должны установить TimePicker в 12-часовой режим, позвонив

yourtimepicker.setIs24HourView(false)

а затем укажите время в 24-часовом формате, используя

yourtimepicker.setHour(22)

Если бы я был на вашем месте, я бы разобрал строку и проверил, была ли последняя часть AM или PM, и если это PM, я бы добавил 12 к значению часа, поэтому, если это было 11:11:PM, я получил бы 23 часа, дал бы это андроиду и пусть это займет заботиться обо всем остальном.

ПРИМЕЧАНИЕ: это работает как в режиме счетчика, так и в режиме часов.

person JustHobby    schedule 29.06.2018

позвони так,

mTimePicker.setIs24HourView(false);

Подробнее здесь

person Gobu CSG    schedule 29.06.2018
comment
@Zhu, можешь поделиться своим экраном? - person Gobu CSG; 29.06.2018
comment
Я обновил изображение, и оно всегда показывает AM, даже если в строке есть PM @GobuCSG - person Zhu; 29.06.2018
comment
Эй, чувак, просто укажи 24-часовой формат, и он станет 12-часовым, вот и все. - person Gobu CSG; 29.06.2018

String = aTime — это строка в формате 24 hour.

   mTimePicker = new TimePickerDialog(context, new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
                    String timeSet;
                    if (selectedHour > 12) {
                        selectedHour -= 12;
                        timeSet = "PM";
                    } else if (selectedHour == 0) {
                        selectedHour += 12;
                        timeSet = "AM";
                    } else if (selectedHour == 12)
                        timeSet = "PM";
                    else
                        timeSet = "AM";
                    String minutes = "";
                    if (selectedMinute < 10)
                        minutes = "0" + selectedMinute;
                    else
                        minutes = String.valueOf(selectedMinute);

                    String aTime = new StringBuilder().append(selectedHour).append(':')
                            .append(minutes).append(" ").append(timeSet).toString();

                    relatedWorkTime.setText(aTime);

                }
            }, hour, minute, false);
            mTimePicker.setTitle("Select Time");
            mTimePicker.show();
person rajat singh    schedule 29.06.2018

Используйте приведенный ниже код, чтобы добавить преобразование из 24-часового формата в 12-часовой формат и добавить AM/PM.

String time =  ((hourOfDay > 12) ? hourOfDay % 12 : hourOfDay) + ":" + (minute < 10 ? ("0" + minute) : minute) + " " + ((hourOfDay >= 12) ? "PM" : "AM");

Пожалуйста, найдите полный код Android timepicker ниже.


final Calendar c = Calendar.getInstance();
                mHour = c.get(Calendar.HOUR_OF_DAY);
                mMinute = c.get(Calendar.MINUTE);

                // Launch Time Picker Dialog
                TimePickerDialog timePickerDialog = new TimePickerDialog(CreateNewBatchActivity.this,
                        new TimePickerDialog.OnTimeSetListener() {

                            @Override
                            public void onTimeSet(TimePicker view, int hourOfDay,
                                                  int minute) {
                                String time =  ((hourOfDay > 12) ? hourOfDay % 12 : hourOfDay) + ":" + (minute < 10 ? ("0" + minute) : minute) + " " + ((hourOfDay >= 12) ? "PM" : "AM");

                                buttonBatchStartTime.setText(time);
                            }
                        }, mHour, mMinute, false);
                timePickerDialog.show();
person Anukul Save    schedule 11.02.2019