ios 检查用户系统区域设置是使用12小时格式还是24小时格式的可靠方法是什么?

nbnkbykc  于 2023-02-06  发布在  iOS
关注(0)|答案(1)|浏览(192)

我们想知道,用户系统区域设置是使用12小时格式还是24小时格式?
How can I determine if iPhone is set for 12 hour or 24 hour time display?上有许多建议的解决方案
其中一个解决方案是

let formatString = DateFormatter.dateFormat(fromTemplate: "j", options: 0, locale: Locale.current)!
let hasAMPM = formatString.contains("a")

但是,对我来说,这不是一个正确的解决方案。
当我使用de_DE(德语使用24小时制)进行测试时,返回的字符串是HH 'Uhr'

  1. Uhr是什么意思?我猜它在德语中是“时钟”的意思?
    1.有这么多其他语言环境,其中之一可能包含字母a
    有人知道检查用户系统语言环境是使用12小时格式还是24小时格式的正确方法吗?
rekjcdws

rekjcdws1#

我发现了下面的解决方案。根据测试,它对台湾和德国都很有效。希望它对其他地区也能很好地工作。如果没有,请让我知道错误。谢谢。

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale.current
dateFormatter.dateStyle = .none
dateFormatter.timeStyle = .short

let amSymbol: String? = dateFormatter.amSymbol
let pmSymbol: String? = dateFormatter.pmSymbol

guard let amSymbol = amSymbol, let pmSymbol = pmSymbol else {
    print("24-hour format")
}

let dateAsString = dateFormatter.string(from: Date())

if dateAsString.contains(amSymbol) || dateAsString.contains(pmSymbol) {
    print("12-hour format")
} else {
    print("24-hour format")
}

相关问题