// // Date+TimeAgo.swift // elpha-ios // // Created by Dwayne Harris on 10/1/18. // Copyright © 2018 Elpha. All rights reserved. // import Foundation extension Date { func timeAgo() -> String { let calendar = Calendar.current let now = Date() let earliest = self < now ? self : now let latest = self > now ? self : now let unitFlags: Set = [.second, .minute, .hour, .day, .weekOfMonth, .month, .year] let components: DateComponents = calendar.dateComponents(unitFlags, from: earliest, to: latest) if let year = components.year { if (year >= 2) { return "\(year) years" } else if (year >= 1) { return "last year" } } if let month = components.month { if (month >= 2) { return "\(month) months" } else if (month >= 1) { return "last month" } } if let weekOfMonth = components.weekOfMonth { if (weekOfMonth >= 2) { return "\(weekOfMonth) weeks" } else if (weekOfMonth >= 1) { return "last week" } } if let day = components.day { if (day >= 2) { return "\(day) days" } else if (day >= 1) { return "yesterday" } } if let hour = components.hour { if (hour >= 2) { return "\(hour) hours" } else if (hour >= 1) { return "an hour ago" } } if let minute = components.minute { if (minute >= 2) { return "\(minute) mins" } else if (minute >= 1) { return "a minute ago" } } if let second = components.second { if (second >= 3) { return "\(second) seconds" } } return "just now" } }