1

I am new to android ,In my app I have a timepicker here I need to programmatically set the hour,minute,AM/PM values .

The value of the time is "11:11:AM" ,In this I have set the hour and time and it is working fine .but I don't know how to set the AM/PM values .

code:

  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);
            }

Image:

enter image description here

It always shows "AM" even if the string has "PM". Can anyone help me to fix this .

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
Zhu
  • 3,679
  • 14
  • 45
  • 76
  • This might be helpful: https://stackoverflow.com/questions/11381985/how-do-i-set-am-pm-in-a-timepicker – AMACB Jun 29 '18 at 16:44

4 Answers4

2

Android automatically sets AM/PM based on time it is supplied in 24 hours format. To clarify:

You have to set TimePicker to 12 hour mode by calling

yourtimepicker.setIs24HourView(false)

and then supply time in 24 hour format using

yourtimepicker.setHour(22)

If i were you i would take string apart and check if last part was AM or PM and if it is PM i would add 12 to hour value, so if it was 11:11:PM i would get 23 hours, give it to android and let it take care of everything else.

NOTE: this works for both spinner and clock mode

JustHobby
  • 483
  • 7
  • 11
  • Perfect Answer!!!. TimePicker can only accept 24 hour format time. and .setIs24HourView(false) method will convert the format and show am/pm layout. – Prinkal Kumar Oct 11 '22 at 16:22
1

call like this ,

mTimePicker.setIs24HourView(false);

Learn more here

Gobu CSG
  • 653
  • 5
  • 7
0

The String = aTime is a 24 hour formatted string

   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();
rajat singh
  • 165
  • 1
  • 11
0

Use below Code to add convert from 24-hour format to 12-hour format and add AM/PM.

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

Please find the entire code of android timepicker below.


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();
Suraj Rao
  • 29,388
  • 11
  • 94
  • 103