Swift convert time to time ago

前端 未结 13 1368
一个人的身影
一个人的身影 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:50

    Swift 3 version of truongky's code:

    extension Date {
    
        var timeAgoSinceNow: String {
            return getTimeAgoSinceNow()
        }
    
        private func getTimeAgoSinceNow() -> String {
    
            var interval = Calendar.current.dateComponents([.year], from: self, to: Date()).year!
            if interval > 0 {
                return interval == 1 ? "\(interval)" + " year" : "\(interval)" + " years"
            }
    
            interval = Calendar.current.dateComponents([.month], from: self, to: Date()).month!
            if interval > 0 {
                return interval == 1 ? "\(interval)" + " month" : "\(interval)" + " months"
            }
    
            interval = Calendar.current.dateComponents([.day], from: self, to: Date()).day!
            if interval > 0 {
                return interval == 1 ? "\(interval)" + " day" : "\(interval)" + " days"
            }
    
            interval = Calendar.current.dateComponents([.hour], from: self, to: Date()).hour!
            if interval > 0 {
                return interval == 1 ? "\(interval)" + " hour" : "\(interval)" + " hours"
            }
    
            interval = Calendar.current.dateComponents([.minute], from: self, to: Date()).minute!
            if interval > 0 {
                return interval == 1 ? "\(interval)" + " minute" : "\(interval)" + " minutes"
            }
    
            return "a moment ago"
        }
    }
    

提交回复
热议问题