You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 06:57:04