Android Framework设置时间为24小时制

发布于:2025-06-28 ⋅ 阅读:(15) ⋅ 点赞:(0)

目的是把设置中使用默认语言区域关掉,并把使用24小时制打开
如下图为原始的:
在这里插入图片描述
修改后变成这样
在这里插入图片描述

定位源码

查找Android SDK xml配置文件中的关键字def_time_12_24

find vendor/ -name "*.xml" | xargs grep def_time_12_24
xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 option
find device/ -name "*.xml" | xargs grep def_time_12_24
find frameworks/base/ -name "*.xml" | xargs grep def_time_12_24

有一些工程可以直接在
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
找到

    <!-- Default for Settings.System.TIME_12_24 -->
    <string name="def_time_12_24" translatable="false">12</string>

实现

修改xml
如果能直接在xml中找到,则直接把12改成24就行了

    <!-- Default for Settings.System.TIME_12_24 -->
    <string name="def_time_12_24" translatable="false">24</string>

如果找不到,需要自行添加,这里要注意,不同的芯片厂添加的位置不一样的。
比如mtk
vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml
在最后面加上

    <!-- Default for Settings.System.TIME_12_24 -->
    <string name="def_time_12_24" translatable="false">24</string>

修改java
frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
如果是mtk,则是
vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
在private void loadSystemSettings(SQLiteDatabase db)函数中添加这句:

loadStringSetting(stmt, Settings.System.TIME_12_24, R.string.def_time_12_24); // 24小时时间格式

附录

12 小时制与 24 小时制的详细解析

一、基本定义与核心区别

  1. 12 小时制(12-hour clock)
  • 定义:将一天分为上午(AM, Ante Meridiem)和下午 / 晚上(PM, Post Meridiem)两个时段,每个时段 12 小时。
  • 表示方式:
    上午:1:00 AM - 11:59 AM(午夜 12 点为 12:00 AM)。
    下午 / 晚上:1:00 PM - 11:59 PM(中午 12 点为 12:00 PM)。
    例:下午 3 点表示为 3:00 PM,午夜 12 点表示为 12:00 AM。
  1. 24 小时制(24-hour clock)
  • 定义:直接用 0:00 到 23:59 表示一天中的每个时刻,无需区分上午 / 下午。
  • 表示方式:
    凌晨:0:00 - 5:59。
    上午:6:00 - 11:59。
    下午:12:00 - 17:59。
    晚上:18:00 - 23:59。
    例:下午 3 点表示为 15:00,午夜 12 点表示为 00:00 或 24:00(部分场景中 24:00 用于表示一天结束)。

二、转换方法与示例

  1. 12 小时制转 24 小时制
  • AM 时段:小时数不变,去掉 AM。
    例:9:30 AM → 09:30(或 9:30)。
  • PM 时段:小时数 + 12,去掉 PM。
    例:3:15 PM → 15:15,12:00 PM → 12:00(中午)。
  • 特殊情况:12:00 AM → 00:00(午夜)。
  1. 24 小时制转 12 小时制
  • 0:00-11:59:小时数不变,加 AM(12:00 除外)。
    例:8:45 → 8:45 AM,12:00 → 12:00 PM(中午)。
  • 12:00-23:59:小时数 - 12,加 PM。
    例:16:20 → 4:20 PM,23:00 → 11:00 PM。
    特殊情况:24:00 → 12:00 AM(午夜,仅在特定场景使用)。

三、应用场景与文化差异

  • 12 小时制的常见地区:
    美国、英国、加拿大等英语国家,以及部分拉丁美洲、亚洲国家(如印度)。
    场景:日常对话、电视节目、社交媒体(如 “晚上 7 点见”)。
  • 24 小时制的常见地区:
    中国、欧洲、澳大利亚、俄罗斯等多数国家。
    场景:
    专业性领域:医院(如用药时间 “14:00”)、航空(航班起飞时间 “06:30”)、军事(“22:00 时发动进攻”)。
    公共服务:交通时刻表(火车 “19:45 开”)、公共设施开放时间(“08:00-22:00”)。
    文化差异影响:
    12 小时制更符合自然语言习惯,但可能因 AM/PM 遗漏导致误解(如 “12 点见面” 可能指中午或午夜)。
    24 小时制因无歧义性,更适用于需要精确计时的场景(如科研、工业生产)。

四、延伸知识:特殊计时制与历史背景

  • 军事时间(Military Time):本质是 24 小时制,但表述方式不同(如 “1500 小时” 表示 15:00,读作 “fifteen hundred hours”)。
  • 历史起源:12 小时制起源于古埃及(将白天和黑夜各分为 12 小时),24 小时制则在工业革命后因标准化需求逐渐普及。
  • 技术应用:计算机系统、编程中普遍使用 24 小时制(如 Unix 时间戳以 00:00:00 为起点)。
    作者:帅得不敢出门

网站公告

今日签到

点亮在社区的每一天
去签到