我的SWIFT时间处理

作者: 代号027 | 来源:发表于2015-10-06 11:04 被阅读212次
    • 使用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时间处理

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