时间显示与系统时钟一样

问题描述 投票:0回答:1

我想在iOS系统时钟中显示时间(以大写字母表示的时间,以及当天的部分时间虽小但是资本)。

我知道我需要一个属性字符串的帮助,但我不知道如何使它与不同的时间显示格式(12和24小时),不同的语言和本地的地方兼容。

ios cocoa-touch nsattributedstring time-format
1个回答
0
投票

要根据用户区域设置获取字符串表示的时间,您可以使用:

let formatter = DateFormatter()
formatter.timeStyle = DateFormatter.Style.short //Or in short formatter.timeStyle = .short
let time = formatter.string(from: Date())

例如,它返回俄罗斯23:47,美国返回11:47。

然后我们可以检查时间格式是否与用户区域设置的日期部分一起返回。如果是这样,我们为字符串中的最后两个字符设置另一种字体,这是我们的日期部分。

if let range = time.range(of: formatter.amSymbol) ?? time.range(of: formatter.pmSymbol) {
    let fontSize: CGFloat = 8.0
    let nsRange = NSRange(range, in: time)

    let attrString = NSMutableAttributedString(string: time)
    attrString.addAttributes([.font: UIFont.systemFont(ofSize: fontSize)], range: nsRange)

    label.attributedText = attrString
} else {
    label.text = time
}
© www.soinside.com 2019 - 2024. All rights reserved.