为什么Android Studio中使用Calendar获取的时间与选中的12/24小时制时间相反?
问题原因
你错误使用了Calendar的时间字段:
Calendar.HOUR是12小时制专用字段,取值范围0-11,不会自动区分上下午,设置值时会沿用Calendar实例默认的上下午标记,才会出现6点和18点反转的问题- 要处理24小时制时间,需要使用
Calendar.HOUR_OF_DAY字段,取值范围0-23,设置时会自动匹配正确的上下午标记
修正后代码
private void handleTimeButton() { final Calendar calendar = Calendar.getInstance(); // 获取当前24小时制小时 int HOUR = calendar.get(Calendar.HOUR_OF_DAY); int MINUTE = calendar.get(Calendar.MINUTE); TimePickerDialog timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker timePicker, int hour, int minute) { Calendar calendar1 = Calendar.getInstance(); // 用24小时制字段存储选择的小时 calendar1.set(Calendar.HOUR_OF_DAY, hour); calendar1.set(Calendar.MINUTE, minute); String text = (String) DateFormat.format("HH:mm", calendar1); etTime.setText(text); // 输出标准24小时制时间 } }, HOUR, MINUTE, true); // 固定使用24小时制选择界面 timePickerDialog.show(); }
内容的提问来源于stack exchange,提问作者Suthar
相关产品推荐
相关产品推荐

