Swift 3 好友消息时间处理

demo.png

如图,类似qq微信好友消息时间展示,方法封装在'String'分类,使用起来比较简单

import UIKit
extension String {

public func friendlyTime(dateTime: String) -> String {
        
        let dateFormatter = DateFormatter()
        dateFormatter.locale = NSLocale(localeIdentifier: "zh_CN") as Locale!
        dateFormatter.setLocalizedDateFormatFromTemplate("yyyy-MM-dd HH:mm:ss")
        if let date = dateFormatter.date(from: dateTime) {
            let delta = NSDate().timeIntervalSince(date)
            
            if (delta <= 0) {
                return "刚刚"
            }
            else if (delta < 60) {
                return "\(Int(delta))秒前"
            }
            else if (delta < 3600) {
                return "\(Int(delta / 60))分钟前"
            }
            else {
                let calendar = NSCalendar.current
                let unitFlags = Set<Calendar.Component>([.year,.month,.day,.hour,.minute])
                let comp = calendar.dateComponents(unitFlags, from: Date())
                
                let currentYear = String(comp.year!)
                let currentDay = String(comp.day!)
                
                let comp2 = calendar.dateComponents(unitFlags, from: date)
                let year = String(comp2.year!)
                let month = String(comp2.month!)
                let day = String(comp2.day!)
                var hour = String(comp2.hour!)
                var minute = String(comp2.minute!)
                
                if comp2.hour! < 10 {
                    hour = "0" + hour
                }
                if comp2.minute! < 10 {
                    minute = "0" + minute
                }
                
                if currentYear == year {
                    if currentDay == day {
                        return "今天 \(hour):\(minute)"
                    } else {
                        return "\(month)月\(day)日 \(hour):\(minute)"
                    }  
                } else {  
                    return "\(year)年\(month)月\(day)日 \(hour):\(minute)"  
                }  
            }  
        }  
        return ""  
    }
}

使用示例

var timeInterval : Int64 = message1!.timestamp
if timeInterval > 140000000000 {
    timeInterval = timeInterval / 1000
    formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
    latestMessageTime = formatter.string(from: Date.init(timeIntervalSince1970: TimeInterval(timeInterval)))
    cell.timeLabel.text = latestMessageTime.friendlyTime(dateTime: latestMessageTime)
}

原文地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,288评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,281评论 4 61
  • 2017丁酉鸡年 28还是29 转眼就是而立之年 然而 还有很多事没有做 风调雨顺的一年 枝叶繁茂 却没有发现一朵...
    从今以往阅读 466评论 1 2
  • 2017.9.21 33组,何颖 广东肇庆 第三阶段觉知动机打卡第8天 1、每天早上询问妹妹和小姨甥女晚上是否休息...
    hedafan阅读 265评论 0 0
  • 好啊,就在这说再见吧。 嗯,再见,你也一定珍重。 一定的。 在这最后,大家都还是绅士,苏南和陆远彼此朝着相反方向汇...
    何未阅读 252评论 1 2