Bera
Bera

Reputation: 165

12 hour format timepicker android

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..!

Upvotes: 0

Views: 3398

Answers (3)

Firoz Memon
Firoz Memon

Reputation: 4650

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!!!

Upvotes: 5

Mehul Kabaria
Mehul Kabaria

Reputation: 6622

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

Upvotes: 1

Sayan Manna
Sayan Manna

Reputation: 679

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

    }
};

Upvotes: 3

Related Questions