Swift3.0时间显示(刚刚、几分钟前。。。)

第一次写东西,对的这个编辑模式实在是,很是无语!
最近才开始学习Swift,看的是小码哥的视频,感觉非常不错,但是不是3.0的,所以就把他的代码改了改,方便以后使用,顺便在这里记录一下,也希望能帮到新手的小伙伴们!

/*
 刚刚(一分钟内)
 X分钟前(一小时内)
 X小时前(当天)
 昨天 HH:mm(昨天)
 MM-dd HH:mm(一年内)
 yyyy-MM-dd HH:mm(更早)
 */

//新浪服务器返回时间格式:"Tue May 31 17:46:55 +0800 2011" 星期 月 日 时 分 秒 时区 年份

if let timeStr = status?.created_at {  //将服务器返回的时间格式化为Date
    let formatter = DateFormatter()
    formatter.dateFormat = "EE MM dd HH:mm:ss Z yyyy"
    formatter.locale = Locale(identifier: "en")

    let createDate = formatter.date(from: timeStr)! //创建一个日历类
    let calendar = Calendar.current
    var result = ""
    var formatterSr = "HH:mm"

    if calendar.isDateInToday(createDate) { //今天
        let interval = Int(NSDate().timeIntervalSince(createDate))  //比较两个时间的差值
        if interval < 60 {
            result = "刚刚"
        }else if interval < 60 * 60 {
            result = "\(interval/60)分钟前"
        }else if interval < 60 * 60 * 24 {
            result = "\(interval / (60 * 60))小时前"
        }
    }else if calendar.isDateInYesterday(createDate) {  //昨天
        formatterSr = "昨天 " + formatterSr
        formatter.dateFormat = formatterSr
        result = formatter.string(from: createDate)
    }else {
        //该方法可以获取两个时间之间的差值
        let comps = calendar.dateComponents([Calendar.Component.year], from: createDate, to: Date())
        if comps.year! >= 1 {  //更早时间
            formatterSr = "yyyy-MM-dd " + formatterSr
        }else { //一年以内
            formatterSr = "MM-dd " + formatterSr
        }
        
        formatter.dateFormat = formatterSr
        result = formatter.string(from: createDate)
    }
    timeLabel.text = result    //timeLabel是显示时间的标签
}

你可能感兴趣的:(Swift3.0时间显示(刚刚、几分钟前。。。))