Самое короткое "время назад"

Я создал функцию, которая очень хорошо сравнивает две даты и возвращает разницу в виде строки

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 час"

Как получить еще более короткие значения, такие как "35 с", "10 м" и просто "2d"?

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

Надеюсь, поможет!

Другие вопросы по тегам