我有时间在 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();
}
});
最佳答案
您不需要获取上午/下午值,因为小时始终采用 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/