0

I have a timepicker which is working fine. But it is in 24 hour format. I want it to be in 12 hour format. I can't find a possible solution. My current code snippet is:

Calendar mcurrentTime = Calendar.getInstance();
            final int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
            int minute = mcurrentTime.get(Calendar.MINUTE);
            TimePickerDialog mTimePicker;
            mTimePicker = new TimePickerDialog(AddJob.this, new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
                    ////
                }
            }, hour, minute, true);
            mTimePicker.setTitle("Select Time");
            mTimePicker.show();

Thanks in advance.

Edit: I am able to check the meridian after the date selection. But I want the user to select the meridian.

Update: How can an android question be duplicate of a javascript question? Someone left a negative vote on that..!

Bera
  • 145
  • 1
  • 2
  • 11

3 Answers3

5

Change your TimePickerDialog call:

Your code is:

mTimePicker = new TimePickerDialog(AddJob.this,
          new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker timePicker,
                       int selectedHour, int selectedMinute) {
                    ////
                }
            }, hour, minute, true);

Change your last parameter from true to false

since TimePickerDialog constructor syntax is:

TimePickerDialog(Context context,
        TimePickerDialog.OnTimeSetListener listener,
        int hourOfDay,
        int minute,
        boolean is24HourView)

Note: last parameter is boolean is24HourView So change it to false and your problem will be solved

For more details, view TimePickerDialog Documentation

Hope it helps!!!

Firoz Memon
  • 4,282
  • 3
  • 22
  • 32
3
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        // TODO Auto-generated method stub
        hour = hourOfDay;
        minutes = minute;
        String timeSet = "";
        if (hour > 12) {
          hour -= 12;
          timeSet = "PM";
        } else if (hour == 0) {
          hour += 12;
          timeSet = "AM";
        } else if (hour == 12){
          timeSet = "PM";
        }else{
          timeSet = "AM";
        }

        String min = "";
        if (minutes < 10)
         min = "0" + minutes ;
        else
         min = String.valueOf(minutes);

        String mTime = new StringBuilder().append(hour).append(':')
        .append(min ).append(" ").append(timeSet).toString();

    }
};
Sayan Manna
  • 584
  • 7
  • 13
  • Thansk its workable , would please guide me how to prevent user not to select 1> Time should not be more than current time 2> Time should not be more than 24 hours. – Gyan Swaroop Awasthi Oct 23 '21 at 07:34
1

you have to do like below try this.

private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        // TODO Auto-generated method stub
        hour = hourOfDay;
        minutes = minute;
        String timeSet = "";
        if (hour > 12) {
          hour -= 12;
          timeSet = "PM";
        } else if (hour == 0) {
          hour += 12;
          timeSet = "AM";
        } else if (hour == 12){
          timeSet = "PM";
        }else{
          timeSet = "AM";
        }

        String min = "";
        if (minutes < 10)
         min = "0" + minutes ;
        else
         min = String.valueOf(minutes);

        String aTime = new StringBuilder().append(hour).append(':')
        .append(min ).append(" ").append(timeSet).toString();
        et1.setText(aTime);
    }
};
Mehul Kabaria
  • 6,404
  • 4
  • 25
  • 50