1

How to get "AM" or "PM" ? I have saw the functions that the TimePicker has,but I did't find any answer.

enter image description here

  TimePickerDialog mTimePicker = new TimePickerDialog(EditEventActivity.this,
            new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker timePicker,
                                      int selectedHour, int selectedMinute) {

                    Log.i(timePicker.is24HourView()?"24":"12");
                    mTextViewTime.setText(selectedHour + ":"
                            + selectedMinute);
                    mHourOfTime = selectedHour;
                    mMinuteOfTime = selectedMinute;
                }
            }, mHourOfTime, mMinuteOfTime, is24HoursFormat);// Yes 24 hour time
    mTimePicker.show();
zys
  • 1,306
  • 3
  • 18
  • 37

2 Answers2

1

AM and PM will be displayed if the User sets Use 24-hour format to false in the device options.

Path on device:
Settings > Date-Time > Use 24-Hour-Format

Source:
I tried it right now on my device.

JDurstberger
  • 4,127
  • 8
  • 31
  • 68
0
    scheduleTime.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Calendar mcurrentTime = Calendar.getInstance();
            int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
            int minute = mcurrentTime.get(Calendar.MINUTE);
            TimePickerDialog mTimePicker;
            mTimePicker = new TimePickerDialog(activity, new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {

                    String choosedHour = "";
                    String choosedMinute = "";
                    String choosedTimeZone = "";
                    if(selectedHour > 12){
                        choosedTimeZone = "PM";
                       selectedHour = selectedHour - 12;
                        if(selectedHour < 10){
                            choosedHour = "0"+selectedHour;
                        }else{
                            choosedHour = ""+selectedHour;
                        }
                    }else{
                        choosedTimeZone = "AM";
                        if(selectedHour < 10){
                            choosedHour = "0"+selectedHour;
                        }else{
                            choosedHour = ""+selectedHour;
                        }
                    }

                    if(selectedMinute < 10){
                        choosedMinute = "0"+selectedMinute;
                    }else{
                        choosedMinute= ""+selectedMinute;
                    }

                    scheduleTime.setText(choosedHour + ":" + choosedMinute +" "+choosedTimeZone);
                    //scheduleTime.setText(selectedHour + ":" + selectedMinute);
                    //scheduleTime.setText( strHrsToShow+":"+datetime.get(Calendar.MINUTE)+" "+am_pm );
                }
            }, hour, minute+30, false);//Yes 24 hour time
            mTimePicker.setTitle("Select Time");
            mTimePicker.show();
        }
    });

Since Android give only 24Hours format, even though you set it false. So Only the way to handle it is the conditions that are parsed with the values (i.e) If selectedHour is greater than 12 then it would be PM and also we need to subtract it by 12 so that we get exact 12 Hours format. And I am also added "0" before Hours if hour is less than 10 in order to avoid 4:1AM like formats.

Jayakumar
  • 303
  • 4
  • 5