作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在当前区域设置的 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。我怎样才能轻松区分这些情况?
最佳答案
一种解决方案是从日期格式化程序生成时间字符串,然后查看生成的字符串是否包含日期格式化程序的 amSymbol
或 pmSymbol
。如果是,请保存该符号并将其从日期字符串中删除。然后你就会得到你需要的两个字符串。
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/
我是一名优秀的程序员,十分优秀!