如何检查系统是 12 小时制还是 24 小时制?

新手上路,请多包涵

我正在尝试确定当前语言环境是设置为 12 小时还是 24 小时,并相应地设置上午/下午。这是我现在得到的,但它一直显示上午/下午,无论它是否设置为 24。

 if (DateFormat.is24HourFormat(this))
{
    mHour = mCalendar.get(Calendar.HOUR_OF_DAY);
    int hourOfDay = mHour;
    if (hourOfDay>12)
        views.setTextViewText(R.id.AMPM, "pm");
    if (hourOfDay==12)
        views.setTextViewText(R.id.AMPM, "pm");
    if (hourOfDay<12)
        views.setTextViewText(R.id.AMPM, "am");
}
else {
    views.setTextViewText(R.id.AMPM, "");
}

原文由 tristan202 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 816
2 个回答

不应该是

if (!DateFormat.is24HourFormat(this))

您只想在未设置为 24 小时格式时分配 am/pm,对吗?

这是一个更紧凑的版本:

 if (!DateFormat.is24HourFormat(this)) {
    mHour = mCalendar.get(Calendar.HOUR_OF_DAY);
    int hourOfDay = mHour;
    if (hourOfDay >= 12) {
        views.setTextViewText(R.id.AMPM, "pm");
    } else {
        views.setTextViewText(R.id.AMPM, "am");
    }
} else {
    views.setTextViewText(R.id.AMPM, "");
}

原文由 Eliseo 发布,翻译遵循 CC BY-SA 3.0 许可协议

更好的解决方案和整个代码示例:

 Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());

// below, the "hour" and "min" are variables,to which you want to set
//calendar.For example you can take this values from time picker
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, min);

is24HourFormat = android.text.format.DateFormat.is24HourFormat(context);

if (is24HourFormat) {
    // if system uses 24hourformat dateFormat will format the calender time according to 24hourformat. "HH" means 24hourformat
    CharSequence setTime = dateFormat.format("HH:mm", calendar);

} else {
    // if system doesnt use 24hourformat dateFormat will format the calender time according to 12hourformat. "hh" means 12hourformat and "a" will show am/pm marker
    CharSequence setTime = dateFormat.format("hh:mm a", calendar);
}

原文由 Eren 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题