android - 无法在 TimePickerDialog 中动态选择 AM/PM

标签 android timepicker

我有时间在 TextView 中,例如 10:53 PM。单击该 TextView 时,我在 TimePickerDialog 上显示 TextView 时间,但我无法根据 TextView 显示 AM/PM。对于这个要求,我看到了 link1 , link2 , link3还有更多,但对我没有任何帮助。有谁知道这件事

我的代码

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's time format
        mTimePicker.setTitle("Select Time");
        mTimePicker.show();

    }
});

编辑 它总是选择 AM 而不是 PM,如图所示 enter image description here

最佳答案

您不需要获取上午/下午值,因为小时始终采用 24 小时格式。 Timepicker 显示 ap/pm 但返回 24h 格式值。

这里 hourOfDay 总是 24 小时制。如果您打开对话框时将 is24HourView 设置为 false,用户将不必处理 24 小时格式的时间,但 Android 会在调用 onTimeSet() 时将其转换为 24 小时时间。

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

关于android - 无法在 TimePickerDialog 中动态选择 AM/PM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40713142/

相关文章:

javascript - 2 jQuery Timepickers -- 如何区分 (jquery.timepicker)

android - 如何不通过 xml 将文本放在图像按钮上

Android:将Time Picker Fragment数据发送到Activity

javascript - timepicker 不允许 hourMax 值超过 99

android - 远程蓝牙

jquery - 我想格式化我的时间选择器 jquery

android - 在Android中将日期和时间转换为毫秒

android - 三星 Galaxy S4 用户报告 BOOT COMPLETED 接收器无法工作?

android - fragment 可以作为 viewpager 而不是 Activity 的宿主吗?

java - android如何从服务器接收数据