iPhone: Convert date string to a relative time stamp

后端 未结 11 1146
醉梦人生
醉梦人生 2020-11-27 09:30

I\'ve got a timestamp as a string like:

Thu, 21 May 09 19:10:09 -0700

and I\'d like to convert it to a relative time stamp like

11条回答
  •  青春惊慌失措
    2020-11-27 10:29

    In Swift

    Usage:

    let time = NSDate(timeIntervalSince1970: timestamp).timeIntervalSinceNow
    let relativeTimeString = NSDate.relativeTimeInString(time)
    println(relativeTimeString)
    

    Extension:

    extension NSDate {
        class func relativeTimeInString(value: NSTimeInterval) -> String {
            func getTimeData(value: NSTimeInterval) -> (count: Int, suffix: String) {
                let count = Int(floor(value))
                let suffix = count != 1 ? "s" : ""
                return (count: count, suffix: suffix)
            }
    
            let value = -value
            switch value {
                case 0...15: return "just now"
    
                case 0..<60:
                    let timeData = getTimeData(value)
                    return "\(timeData.count) second\(timeData.suffix) ago"
    
                case 0..<3600:
                    let timeData = getTimeData(value/60)
                    return "\(timeData.count) minute\(timeData.suffix) ago"
    
                case 0..<86400:
                    let timeData = getTimeData(value/3600)
                    return "\(timeData.count) hour\(timeData.suffix) ago"
    
                case 0..<604800:
                    let timeData = getTimeData(value/86400)
                    return "\(timeData.count) day\(timeData.suffix) ago"
    
                default:
                    let timeData = getTimeData(value/604800)
                    return "\(timeData.count) week\(timeData.suffix) ago"
            }
        }
    }
    

提交回复
热议问题