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是显示时间的标签
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 参观沧州师范学院,和老师交流校企合作电商人才培养。间或沟通起企业人才培养中的教练技术和为什么做这件事?想起在IPM...
    韧性十足的牛皮糖阅读 1,029评论 0 6
  • 下面是笑来老师的建议: 首先要把注意力放在自己的成长上。放在一切你想提升的有积累效应的技能磨练上。我的答案在这里:...
    洛尓阅读 230评论 0 0
  • 你紧闭着眼眸 呼吸着夜的芬芳 月亮照在你脸上 映射出霞光 你靠在我肩膀 幸福印在我胸膛 端详着你的模样 浅吻着你的...
    甘露李乐阅读 201评论 0 0
  • 第18条:尽量使用不可变对象 尽量把对外公布出来的属性设为只读,而且只在确有必要时才将属性对外公布。 对象中表示各...
    dibadalu阅读 266评论 0 0