- 使用IOS中的时间格式化工具(DateFormatter)可以很方便的对String和NSDate进行转换
- 使用NSDate的timeIntervalSince1970可以得到一个1970年来的时间戳
- 可以对时间戳进行算术运算
下面的代码,通过格式化String到NSDate,而后得到标准时间戳,之后对时间戳进行运算
- 第一个方法通过开始时间和结束时间 得到一个时间段 最后根据当前时间计算出来当前时间和整个时间段的比值(rate)
- 第二个方法根据结束时间得到一个时间戳 进行算术运算后 转换成天数、小时和分钟
下面这段代码返回的数据将会被用作控制页面的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 ""
}
}
}
网友评论