The shortest "time ago"

44 Views Asked by At

I created a function which very nice compare two dates and return difference as String

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())
    }
}

But it returns values like "35 sec", "10 min" or even "2 days 1 hr"

How to get even shorter values like "35s", "10m" and just "2d" ?

1

There are 1 best solutions below

0
Abhishek Jain On BEST ANSWER

Try this code -

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())
    }
}

Hope it helps!