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

如何可靠判断用户系统区域设置采用12/24小时时间格式?

判断系统区域的时间格式(12/24小时制)

关于你的两个疑问

  • 你猜的没错,Uhr是德语里的“点钟”,比如德语里表述19点会写19 Uhr,是24小时制时间的标准后缀。
  • 你提到的contains("a")方法确实存在误判风险:部分区域的时间格式字符串里可能包含字母"a",但并非AM/PM的标识,比如某些语言的时间格式里带有包含"a"的本地化词汇,会导致错误判定。

正确的判断方法

推荐两种可靠的实现方式:

方法一:利用DateFormatter的is12HourFormat属性

这是苹果官方提供的属性,直接返回当前locale下是否采用12小时制:

let formatter = DateFormatter()
formatter.locale = Locale.current
// 设置timeStyle触发formatter的本地化配置
formatter.timeStyle = .short
let isUsing12HourFormat = formatter.is12HourFormat

方法二:基于模板字符串判断小时格式符号

利用j模板会根据locale自动选择小时格式的特性,判断生成的格式字符串里是12小时制的h(或hh),还是24小时制的H(或HH):

guard let formatString = DateFormatter.dateFormat(fromTemplate: "j", options: 0, locale: Locale.current) else {
    // 处理格式获取失败的场景,可根据需求设置默认值
    fatalError("Failed to get date format from template")
}
// 包含h则为12小时制,包含H则为24小时制
let isUsing12HourFormat = formatString.contains("h")

这两种方法都能避开原方案的误判问题,更适配不同区域的本地化规则。

内容的提问来源于stack exchange,提问作者Cheok Yan Cheng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:13:35