安卓时钟24转12小时设置+MySQL时间存储显示适配问询
1. 安卓系统时钟从24小时制切换为12小时制的方法
不同安卓品牌的设置路径略有差异,但核心逻辑都是找到「日期和时间」设置项调整格式:
- 原生安卓/谷歌Pixel系列:
- 打开手机「设置」应用
- 进入「系统」>「日期和时间」
- 取消勾选「使用24小时制」,系统会自动切换为带AM/PM标识的12小时制
- 小米/红米:
- 打开「设置」>「更多设置」>「日期和时间」
- 关闭「24小时制」开关
- 华为/荣耀:
- 打开「设置」>「系统和更新」>「日期和时间」
- 关闭「24小时制」按钮
- 三星:
- 打开「设置」>「常规管理」>「日期和时间」
- 取消「使用24小时格式」的勾选
2. 实现时间以12小时制存储并在安卓App中显示
我给你两种方案,你可以根据实际需求选择:
方案一:修改PHP存储逻辑,直接存储12小时制字符串
注意:数据库的time字段本身是为24小时制时间设计的(范围00:00:00~23:59:59),如果要存储带AM/PM的12小时制字符串,建议先把time字段类型改成varchar(20),再修改PHP代码:
<?php include 'con.php'; date_default_timezone_set("Asia/Muscat"); // 生成12小时制带AM/PM的时间字符串 $formattedTime = date("h:i:s A"); $sql = "insert into student(time)values('$formattedTime')"; if(mysqli_query($con, $sql)) { // 存储成功的逻辑(可按需添加) } else { // 存储失败的逻辑(可按需添加) } mysqli_close($con); ?>
这种方式存完后安卓端可以直接显示,但缺点是后续对时间做排序、计算等操作会很麻烦,因为是字符串类型。
方案二:数据库存24小时制,安卓端转换显示(更推荐)
保留数据库time字段的原生类型,方便后续时间操作,只在安卓端做格式转换:
步骤1:PHP端保持原有逻辑
你的原有PHP代码不用改,now()插入的标准时间存储为time类型更利于后续业务操作。
步骤2:修改安卓RecyclerView的显示代码
在onBindViewHolder中把24小时制字符串转成12小时制:
@Override public void onBindViewHolder(final ViewHolder holder, int position) { ItemHome currentItem = mExampleList.get(position); String time24h = currentItem.getTime(); // 转换时间格式 SimpleDateFormat inputFormat = new SimpleDateFormat("HH:mm:ss", Locale.getDefault()); SimpleDateFormat outputFormat = new SimpleDateFormat("hh:mm:ss a", Locale.getDefault()); String time12h = time24h; // 默认用原时间,避免转换失败崩溃 try { Date date = inputFormat.parse(time24h); time12h = outputFormat.format(date); } catch (ParseException e) { e.printStackTrace(); } holder.text_view_time.setText(time12h); }
如果数据库返回的时间格式不是HH:mm:ss,记得调整inputFormat的格式字符串匹配上。
内容的提问来源于stack exchange,提问作者user13928463
相关产品推荐
相关产品推荐

