美文网首页swiftSwift 专栏ios专题
swift微博第18天(NSDate+Extension.swi

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

作者: IIronMan | 来源:发表于2017-12-17 16:43 被阅读28次
    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)
    

相关文章

网友评论

    本文标题:swift微博第18天(NSDate+Extension.swi

    本文链接:https://www.haomeiwen.com/subject/cwrvixtx.html