gpt4 book ai didi

Swift:获取本地化时间显示 - 在 12 小时区域内具有单独的 AM/PM

转载 作者:行者123 更新时间:2023-11-30 11:04:47 27 4
gpt4 key购买 nike

我想在当前区域设置的 UILabel 中显示当前日期的时间。假设当前时间为 15:30(24 小时显示)/3:30 PM(12 小时显示)。现在,如果用户的当前区域设置是 12 小时显示,则标签应仅显示“3:30”,并且“PM”应显示在第二个标签中。我打算使用

someDateTime = Date()
let df = DateFormatter()
df.locale = Locale.autoupdatingCurrent
df.timeStyle = .short
timeLabel.text = df.string(from: someDateTime) // how without AM/PM ?
ampmLabel.text = "???" // how to show only in 12 hours regions?

但在 12 小时制区域中,它始终附带 AM/PM。我怎样才能轻松区分这些情况?

最佳答案

一种解决方案是从日期格式化程序生成时间字符串,然后查看生成的字符串是否包含日期格式化程序的 amSymbolpmSymbol。如果是,请保存该符号并将其从日期字符串中删除。然后你就会得到你需要的两个字符串。

let timeDF = DateFormatter()
timeDF.locale = ... // whatever you need of other than the user's current
timeDF.dateStyle = .none
timeDF.timeStyle = .short
var timeStr = timeDF.string(from: Date())
var ampmStr = ""
if let rng = timeStr.range(of: timeDF.amSymbol) {
ampmStr = timeDF.amSymbol
timeStr.removeSubrange(rng)
} else if let rng = timeStr.range(of: timeDF.pmSymbol) {
ampmStr = timeDF.pmSymbol
timeStr.removeSubrange(rng)
}

timeLabel.text = timeStr.trimmingCharacters(in: .whitespaces)
ampmLabel.text = ampmStr

关于Swift:获取本地化时间显示 - 在 12 小时区域内具有单独的 AM/PM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52846287/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com