【问题标题】:Time display as in system clock时间显示与系统时钟一样
【发布时间】:2019-08-10 09:32:35
【问题描述】:

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

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

【问题讨论】:

    标签: ios cocoa-touch nsattributedstring time-format


    【解决方案1】:

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

    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
    }
    

    【讨论】:

    • Wikipedia 中我只找到了这一次的格式。如果您知道可以指定其他格式吗?
    • @Rmurad 检查更新版本。它应该可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 2012-06-16
    • 2019-01-16
    • 2015-10-11
    • 2015-07-04
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多