Swift convert time to time ago

前端 未结 13 1314
一个人的身影
一个人的身影 2020-12-24 02:14

In Swift5, we have RelativeDateTimeFormatter

Prior to Swift5:


I\'m trying to convert time to time ago, what i wanna do is:

from 1

13条回答
  •  温柔的废话
    2020-12-24 02:31

    For swift 5.x

    extension Date {
    
        func timeAgoSinceDate() -> String {
    
            // From Time
            let fromDate = self
    
            // To Time
            let toDate = Date()
    
            // Year
            if let interval = Calendar.current.dateComponents([.year], from: fromDate, to: toDate).year, interval > 0  {
    
                return interval == 1 ? "\(interval)" + " " + "year ago" : "\(interval)" + " " + "years ago"
            }
    
            // Month
            if let interval = Calendar.current.dateComponents([.month], from: fromDate, to: toDate).month, interval > 0  {
    
                return interval == 1 ? "\(interval)" + " " + "month ago" : "\(interval)" + " " + "months ago"
            }
    
            // Day
            if let interval = Calendar.current.dateComponents([.day], from: fromDate, to: toDate).day, interval > 0  {
    
                return interval == 1 ? "\(interval)" + " " + "day ago" : "\(interval)" + " " + "days ago"
            }
    
            // Hours
            if let interval = Calendar.current.dateComponents([.hour], from: fromDate, to: toDate).hour, interval > 0 {
    
                return interval == 1 ? "\(interval)" + " " + "hour ago" : "\(interval)" + " " + "hours ago"
            }
    
            // Minute
            if let interval = Calendar.current.dateComponents([.minute], from: fromDate, to: toDate).minute, interval > 0 {
    
                return interval == 1 ? "\(interval)" + " " + "minute ago" : "\(interval)" + " " + "minutes ago"
            }
    
            return "just now"
        }
    }
    

    How to use

    oldDate.timeAgoSinceDate()
    

    Happy Coding :)

提交回复
热议问题