- 使用IOS中的時(shí)間格式化工具(DateFormatter)可以很方便的對(duì)String和NSDate進(jìn)行轉(zhuǎn)換
- 使用NSDate的timeIntervalSince1970可以得到一個(gè)1970年來的時(shí)間戳
- 可以對(duì)時(shí)間戳進(jìn)行算術(shù)運(yùn)算
下面的代碼,通過格式化String到NSDate失晴,而后得到標(biāo)準(zhǔn)時(shí)間戳剧腻,之后對(duì)時(shí)間戳進(jìn)行運(yùn)算
- 第一個(gè)方法通過開始時(shí)間和結(jié)束時(shí)間 得到一個(gè)時(shí)間段 最后根據(jù)當(dāng)前時(shí)間計(jì)算出來當(dāng)前時(shí)間和整個(gè)時(shí)間段的比值(rate)
- 第二個(gè)方法根據(jù)結(jié)束時(shí)間得到一個(gè)時(shí)間戳 進(jìn)行算術(shù)運(yùn)算后 轉(zhuǎn)換成天數(shù)、小時(shí)和分鐘
下面這段代碼返回的數(shù)據(jù)將會(huì)被用作控制頁(yè)面的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 "已經(jīng)完結(jié)"
}
let nature = timestamp / 3600
if nature > 24{
return ("\(Int(nature/24))天后完結(jié)")
}else if nature > 1{
return("\(Int(nature))小時(shí)后完結(jié)")
}else if nature < 1 {
return("\(Int(nature*60))分鐘后完結(jié)")
}else{
return ""
}
}
}