我的SWIFT时间处理

  • 使用IOS中的时间格式化工具(DateFormatter)可以很方便的对String和NSDate进行转换
  • 使用NSDate的timeIntervalSince1970可以得到一个1970年来的时间戳
  • 可以对时间戳进行算术运算

下面的代码,通过格式化String到NSDate,而后得到标准时间戳,之后对时间戳进行运算

  1. 第一个方法通过开始时间和结束时间 得到一个时间段 最后根据当前时间计算出来当前时间和整个时间段的比值(rate)
  2. 第二个方法根据结束时间得到一个时间戳 进行算术运算后 转换成天数、小时和分钟

下面这段代码返回的数据将会被用作控制页面的prigress和label,最后效果如下:

import Foundation

class DateTimeUtil{

    func getWorkRate(startTime: String, endTime: String) -> Float{
        let dateFormatetr = NSDateFormatter()
        dateFormatetr.dateFormat = "yyyy-MM-dd HH:mm:ss"
        let start = dateFormatetr.dateFromString(startTime)?.timeIntervalSince1970
        let end = dateFormatetr.dateFromString(endTime)?.timeIntervalSince1970
        let now = NSDate().timeIntervalSince1970
        var rate = (now - start!) / (end! - start!)
        rate = floor(rate*1000)/1000
        print(rate)
        return Float(rate)
    }
    
    func timeToNature(endTime: String) -> String{
        let dateFormatetr = NSDateFormatter()
        dateFormatetr.dateFormat = "yyyy-MM-dd HH:mm:ss"
        let end = dateFormatetr.dateFromString(endTime)?.timeIntervalSince1970
        let now = NSDate().timeIntervalSince1970
        let timestamp = end! - now
        if timestamp < 0{
            return "已经完结"
        }
        let nature = timestamp / 3600
        if nature > 24{
            return ("\(Int(nature/24))天后完结")
        }else if nature > 1{
            return("\(Int(nature))小时后完结")
        }else if nature < 1 {
            return("\(Int(nature*60))分钟后完结")
        }else{
            return ""
        }
    }
    
}

你可能感兴趣的:(我的SWIFT时间处理)