【问题标题】:The shortest "time ago"最短的“时间前”
【发布时间】:2017-12-29 01:06:03
【问题描述】:

我创建了一个非常好的比较两个日期并将差异返回为字符串的函数

extension Date {
    var shortTimeAgo: String {
        let formatter = DateComponentsFormatter()
        formatter.allowedUnits = [.year,.month,.weekOfMonth,.day,.hour,.minute,.second]
        formatter.maximumUnitCount = 1
        formatter.unitsStyle = .short
        return formatter.string(from: self, to: Date())
    }
}

但它会返回诸如“35 秒”、“10 分钟”甚至“2 天 1 小时”之类的值

如何获得更短的值,例如“35s”、“10m”和“2d”?

【问题讨论】:

  • 您是否阅读过UnitsStyle 其他内容的文档?你试过了吗?
  • 是的,选项 .short 是最短的,但仍然很长;)
  • 你试过abbreviated吗?文档说:一种使用最缩写拼写的单位。缩写样式表示单位值的最短拼写。例如,一小时十分钟显示为“1h 10m”。

标签: date nsdatecomponents nsdatecomponentsformatter


【解决方案1】:

试试这个代码 -

extension Date {
    var shortTimeAgo: String {
        let formatter = DateComponentsFormatter()
        formatter.allowedUnits = [.year,.month,.weekOfMonth,.day,.hour,.minute,.second]
        formatter.maximumUnitCount = 1
        formatter.unitsStyle = .abbreviated
        return formatter.string(from: self, to: Date())
    }
}

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多