时间显示与系统时钟相同

时间:2019-03-19 18:46:20

标签: ios cocoa-touch nsattributedstring time-format

我想以iOS系统时钟的形式显示时间(大写字母的时间,一天中的小部分,但大写)。

iOS Alarm.app table cell

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

1 个答案:

答案 0 :(得分: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 PM。

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

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
}