【问题标题】:Updating deprecated code from CFGregorianDate to CFCalendar or NSCalendar API将不推荐使用的代码从 CFGregorianDate 更新到 CFCalendar 或 NSCalendar API
【发布时间】:2015-08-23 14:52:26
【问题描述】:

我正在尝试更新已弃用的代码:

elapsedTime = CFAbsoluteTimeGetGregorianDate((totalElapsedTime + totalElapsedTime2), nil)

我想我可以简单地将我的公历日期更改为 NSDate 并使用 dateByAddingTimeInterval :

 elapsedTime = elapsedTime.dateByAddingTimeInterval((totalElapsedTime + totalElapsedTime2))

此代码编译但由于 elapsedTime 为零而崩溃。

我应该使用其他方法来替换 CFAbsoluteTimeGetGregorianDate。我已经通过 NSDate 库并进行了尝试,但一无所获。

【问题讨论】:

    标签: nsdate swift2


    【解决方案1】:

    我将我的代码更改为以下代码,它就像一个魅力。我在网上找不到这个,所以希望这对其他人有帮助。

    let myTimeInterval = NSTimeInterval((totalElapsedTime + totalElapsedTime2))
    let formattedDateString: String =  stringFromTimeInterval(myTimeInterval)
    

    和stringFromTimeInterval函数:

     func stringFromTimeInterval(interval:NSTimeInterval) -> String {
    
        let ti = Int(interval)
    
        let ms = Int((interval % 1) * 100)
    
        let seconds = ti % 60
        let minutes = (ti / 60) % 60
        let hours = (ti / 3600)
    
        return String(format: "%0.2d:%0.2d:%0.2d.%0.2d",hours,minutes,seconds,ms)
    
    }
    

    【讨论】:

    • 请注意,尽管有它的名字,但上面的ms 的值不是毫秒数,它是0 到999 之间的整数。这通常会是一个错误,除了上面的ms 被计算为毫秒数的十分之一,以便稍后符合%0.2d 格式化代码。因为ms在其他方面没有被使用,所以返回的字符串不会出错。
    猜你喜欢
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多