Swift-关于日期处理【技术】

时间处理:分类可以直接使用

```

//刚刚(一分钟内)    x分钟前(一小时内)     x小时前(当天)    MM-dd HH:mm(一年内)

class ViewController: UIViewController {

   override func viewDidLoad() {

         super.viewDidLoad()

         let str = "Sat Nov 10 14:50:10 +0800 2015"

         let date = NSDate.sinaDate(str)

         let fullString = date?.fullDescription()

          print(fullString)

}

```

```

//处理比较复杂的时间的运算 可以 NSCalendar  提供非常丰富的时间处理函数

import Foundation

extension NSDate {

      //将字符串转换为 日期对象

     class func sinaDate(dateString: String) -> NSDate? {

         //实例化转换字符串的对象 ,将字符串 转换成日期

         let df = NSDateFormatter()

        df.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"    //指定转换格式

        let date = df.dateFromString(dateString)    //将字符串转换为 日期 对象

        return date

}

func fullDescription() -> String {                //将日期转换描述字符串

      let calendar = NSCalendar.currentCalendar()

      if calendar.isDateInToday(self) {

      print("今天")

      //确定计算的时间 和当前的时间的差值

      let delta = Int(NSDate().timeIntervalSinceDate(self))

             if delta < 60 {

               return "刚刚"

           } else if delta < 60 * 60 { 

          return "\(delta / 60)分钟前"

}

        return "\(delta / 3600)小时前"

       }  else {            //表示今天

      var dateformatString = ""                //非今天

      if calendar.isDateInYesterday(self) {

     dateformatString = "昨天 HH:mm"

    } else {

//unitflay ,fromDate ,toDate

 let result = calendar.components(.Year, fromDate: self, toDate: NSDate(), options: [])

  if result.year == 0 {

    dateformatString = "MM-dd HH:mm"              //当年 MM-dd HH:mm(一年内)

     } else {

     dateformatString = "yyyy-MM-dd HH:mm"          //非当年 yyyy-MM-dd HH:mm(更早期)

    }

}

//统一计算所有的时间描述

          let df = NSDateFormatter()

        df.dateFormat =  dateformatString

        return df.stringFromDate(self)  

           }

     }

}

```

很好用的时间分类,有类似项目可以直接移植到你的项目中

你可能感兴趣的:(Swift-关于日期处理【技术】)