swift微博第18天(NSDate+Extension.swift)

简介: swift微博第18天(NSDate+Extension.swift)
  1. 微博时间的处理(下面是时间的处理类型)


  • 刚刚(一分钟以内)
  • 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)


目录
相关文章
|
SQL 存储 Oracle
swift微博第25天(SQLite)
swift微博第25天(SQLite)
227 0
swift微博第25天(SQLite)
|
Swift
swift微博第21天(图片选择器)
swift微博第21天(图片选择器)
488 0
swift微博第21天(图片选择器)
|
Swift
swift微博第15天(新版的判断以及跟控制器的切换)
swift微博第15天(新版的判断以及跟控制器的切换)
183 0
swift微博第15天(新版的判断以及跟控制器的切换)
|
Swift
swift微博第14天(新特性的引导图)
swift微博第14天(新特性的引导图)
199 0
swift微博第14天(新特性的引导图)
|
安全 Swift 数据安全/隐私保护
swift微博第12天(OAuth授权)
swift微博第12天(OAuth授权)
181 0
swift微博第12天(OAuth授权)
|
程序员 API Swift
swift微博第11天(三方框架的导入和手动导入的桥接以及swift单粒)
swift微博第11天(三方框架的导入和手动导入的桥接以及swift单粒)
184 0
swift微博第11天(三方框架的导入和手动导入的桥接以及swift单粒)
|
Swift
swift微博第9天(自定义微博首页的菜单)
swift微博第9天(自定义微博首页的菜单)
186 0
swift微博第9天(自定义微博首页的菜单)
|
Swift
swift微博第7天(导航条按钮的封装)
swift微博第7天(导航条按钮的封装)
146 0
swift微博第7天(导航条按钮的封装)
|
Swift
swift微博第6天(未登录界面的完善)
swift微博第6天(未登录界面的完善)
128 0
swift微博第6天(未登录界面的完善)
|
JSON Swift 数据格式
swift微博第3天(动态加载控制器)
swift微博第3天(动态加载控制器)
119 0
swift微博第3天(动态加载控制器)