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

Android中如何准确判断系统时间为12小时制还是24小时制?

准确判断Android系统时间制式(12/24小时制)的方案

当系统开启「使用区域默认值」开关时,原有的Settings.System.TIME_12_24读取和DateFormat.is24HourFormat()方法会因为设置值变为"locale"而依赖Locale判断,可通过以下步骤实现精准判断:

核心思路

  1. 优先读取系统TIME_12_24设置:
    • 若值为"24" → 确定是24小时制
    • 若值为"12" → 确定是12小时制
    • 若值为"locale"(开启区域默认)→ 根据当前系统Locale的默认时间格式判断

实现代码(Kotlin)

import android.content.Context
import android.provider.Settings
import android.text.format.DateFormat
import java.util.Locale

fun isSystemUsing24HourFormat(context: Context): Boolean {
    val timeFormatSetting = Settings.System.getString(context.contentResolver, Settings.System.TIME_12_24)
    return when (timeFormatSetting) {
        "24" -> true
        "12" -> false
        else -> {
            // 获取当前系统配置的Locale
            val systemLocale = context.resources.configuration.locales.get(0)
            // 获取该Locale默认的时间格式模板(针对小时分钟的格式)
            val timePattern = DateFormat.getBestDateTimePattern(systemLocale, "HHmm")
            // 24小时制格式包含"H",12小时制包含"h"
            timePattern.contains("H")
        }
    }
}

关键细节说明

  • 权限说明:读取TIME_12_24无需额外权限(Android 6.0+及更低版本均支持)
  • Locale获取:使用context.resources.configuration.locales[0]确保获取的是当前系统生效的区域设置,而非应用自定义Locale
  • 格式判断逻辑:24小时制的时间格式会使用H或HH(如HH:mm),12小时制使用h或hh(如hh:mm a),通过检测格式字符串中是否包含H即可准确判断

内容的提问来源于stack exchange,提问作者Min Li

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:48:20