- 微博时间的处理(下面是时间的处理类型)
- 刚刚(一分钟以内)
- X分钟以前(1个小时以内)
- X小时前(当天)
- 昨天 HH:mm(昨天)
- MM-dd HH-mm (一年内)
- yyyy-MM-dd HH:mm (更早时间)
- 微博时间的处理(下面是时间的处理类型)
-
2.定义一个
NSDate+Extension.swift
类public extension NSDate { // MARK: 这是一个综合的写法 class func createdateWithStr(time: String) -> NSString { // 1. 将服务器返回给我们的时间字符串转化为NSDate // 1.1.创建formatter let formatter = DateFormatter() // 1.2.设置时间格式 formatter.dateFormat = "EEE MMM d HH:mm:ss Z yyyy" // 1.3.设置时间的区域(真机必须设置,负责可能转化不成功) formatter.locale = NSLocale(localeIdentifier: "en") as Locale! // 1.4.转化字符串,转化好的字符串是去除时区的时间 let date = formatter.date(from: time) let calendar = NSCalendar.current // 1.判断是否为今天 if calendar.isDateInToday(date!) { // 1.0获取当前时间与紫铜时间之间的差距(秒数) let since = Int(NSDate().timeIntervalSince(date!)) // 1.1.是否为刚刚 print(since) if since < 60 { return "刚刚" } // 1.2.多少分钟以前 if since < 60 * 60 { return "\(since/60)分钟前" as NSString } // 1.3.多少小时以前 return "\(since/(60 * 60))小时前" as NSString } // 2.0.判断是否为昨天 var formatterStr = "HH:mm" if calendar.isDateInYesterday(date!) { // 昨天 formatterStr = "昨天:" + formatterStr }else{ // 取到当前时间 let currentDate = NSDate() // 初始化时间格式化器 let df = DateFormatter() // 指定格式 df.dateFormat = "yyyy" // 格式当前时间与目标时间成字符串 let currentDateString = df.string(from: currentDate as Date) let dateString = df.string(from: date!) // 判断是不是今年 if (currentDateString as NSString).isEqual(to: dateString) { // 是今年 // 3. 处理一年以内 formatterStr = "MM-dd-" + formatterStr }else{ // 4.不是今年 formatterStr = "yyyy-MM-dd-" + formatterStr } } // 5.按照指定的格式将时间转化为字符串 // 5.1.创建formatter let formatter1 = DateFormatter() // 5.2.设置时间格式 formatter1.dateFormat = formatterStr // 5.3.设置时间的区域(真机必须设置,负责可能转化不成功) formatter1.locale = NSLocale(localeIdentifier: "en") as Locale! // 5.4.格式化 return formatter1.string(from: date!) as NSString } }
-
3.调用
时间的格式为
"Sun Dec 1 14:52:59 +0800 2017"
var created_at = "Sun Dec 1 14:52:59 +0800 2017" created_at = NSDate.createdateWithStr(time: created_at) as String print(created_at)
网友评论