Unable to select AM / PM dynamically in TimePickerDialog

I had time in TextView, for example 10:53 PM. When I click on this TextView, I show the TextView time on TimePickerDialog, but I cannot show AM / PM according to the TextView. To do so, I saw link1 , link2 , link3 and more, but nothing worked for me. Anyone know about it

My code

String inputTime = "10:53 PM", inputHours, inputMinutes;

inputHours = inputTime.substring(0, 2);
inputMinutes = inputTime.substring(3, 5);

tvTime.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {


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

                if (selectedHour == 0) {
                    selectedHour += 12;
                    timeFormat = "AM";
                } else if (selectedHour == 12) {
                    timeFormat = "PM";
                } else if (selectedHour > 12) {
                    selectedHour -= 12;
                    timeFormat = "PM";
                } else {
                    timeFormat = "AM";
                }

                String selectedTime = selectedHour + ":" + selectedMinute + " " + timeFormat;

                tvTime.setText(selectedTime);

            }
        }, Integer.parseInt(inputHours), Integer.parseInt(inputMinutes), false);//mention true for 24 hour time format
        mTimePicker.setTitle("Select Time");
        mTimePicker.show();

    }
});

Edit It always selects AM instead of PM, as shown in the figure. enter image description here

+4
source share
5 answers

am/pm, 24- . Timepicker ap/pm, 24h.

hourOfDay 24-. is24HourView false, 24- , Android 24- , onTimeSet().

    Calendar calendar = Calendar.getInstance();
            TimePickerDialog timePickerDialogfrom = new TimePickerDialog(activity, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                calendar.set(Calendar.MINUTE, minute);
//Conversion for AM/PM as you are doing
            }
        }, calendar.get(Calendar.HOUR), calendar.get(Calendar.MINUTE), false);
+2

timepicker.setCurrentHour(Calendar.HOUR_OF_DAY);

0

selectedHour 24- . , 12 Hour AM-PM .

public void onTimeSet(TimePicker view, int selectedHour, int selectedMinute) {
        String AM_PM = " AM";
        String mm_precede = "";
        if (selectedHour >= 12) {
            AM_PM = " PM";
            if (selectedHour >=13 && selectedHour < 24) {
                selectedHour -= 12;
            }
            else {
                selectedHour = 12;
            }
        } else if (selectedHour == 0) {
            selectedHour = 12;
        }
        if (selectedMinute < 10) {
            mm_precede = "0";
        }
        Toast.makeText(mContext, "" + selectedHour + ":" + mm_precede + selectedMinute + AM_PM, Toast.LENGTH_SHORT).show();
    }
0

"Ready Android"

As stated in “Ready Android,” we need to convert the input time of 12 hours to 24 hours, then we must transfer this value to TimePicker, and finally, when we use the selected time, again we need to convert 24 hours of time in 12 hours, as shown in this code

String inputTime = "01:15 PM"

try {

// Converting 12 hrs time to 24 hrs

DateFormat inputFormat = new SimpleDateFormat("hh:mm aa", Locale.US);
DateFormat outputFormat = new SimpleDateFormat("HH:mm", Locale.US);
Log.e("finalDate", outputFormat.format(inputFormat.parse(inputTime)));

inputTime = outputFormat.format(inputFormat.parse(inputTime));

//Getting hours and minutes separately
inputHours = inputTime.substring(0, 2);
inputMinutes = inputTime.substring(3, 5);

Log.e("inputHours", inputHours);
Log.e("inputMinutes", inputMinutes);

} catch (ParseException e) {
  e.printStackTrace();
}




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

    // Converting selected 24 hrs time to 12 hrs
    String timeFormat;

    if (selectedHour == 0) {
        selectedHour += 12;
        timeFormat = "AM";
    } else if (selectedHour == 12) {
        timeFormat = "PM";
    } else if (selectedHour > 12) {
        selectedHour -= 12;
        timeFormat = "PM";
    } else {
        timeFormat = "AM";
    }



    // Placing the 0 in front of single digit hours and minutes

    String finalSelectedHour, finalSelectedMinute;

    if(selectedHour < 10)
        finalSelectedHour = "0" + selectedHour;
    else
        finalSelectedHour = String.valueOf(selectedHour);


    if (selectedMinute < 10)
        finalSelectedMinute = "0" + selectedMinute;
    else
        finalSelectedMinute = String.valueOf(selectedMinute);


    String selectedTime = finalSelectedHour + ":" + finalSelectedMinute + " " + timeFormat;


    tvTime.setText(selectedTime);

}
}, Integer.parseInt(inputHours), Integer.parseInt(inputMinutes), false);//mention true for 24 hour time format
mTimePicker.setTitle("Select Time");
mTimePicker.show();
0
source
    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();
        }
    });

I used this logic to solve this problem.

0
source

Source: https://habr.com/ru/post/1661403/


All Articles