Convert Date to Integer in Swift

后端 未结 3 1314
暖寄归人
暖寄归人 2020-12-30 02:40

I am updating some of my old Swift 2 answers to Swift 3. My answer to this question, though, is not easy to update since the question specifically asks for NSDate

3条回答
  •  北荒
    北荒 (楼主)
    2020-12-30 02:59

    Date to Int

    // using current date and time as an example
    let someDate = Date()
    
    // convert Date to TimeInterval (typealias for Double)
    let timeInterval = someDate.timeIntervalSince1970
    
    // convert to Integer
    let myInt = Int(timeInterval)
    

    Doing the Double to Int conversion causes the milliseconds to be lost. If you need the milliseconds then multiply by 1000 before converting to Int.

    Int to Date

    Including the reverse for completeness.

    // convert Int to TimeInterval (typealias for Double)
    let timeInterval = TimeInterval(myInt)
    
    // create NSDate from Double (NSTimeInterval)
    let myNSDate = Date(timeIntervalSince1970: timeInterval)
    
    I could have also used `timeIntervalSinceReferenceDate` instead of `timeIntervalSince1970` as long as I was consistent. This is assuming that the time interval is in seconds. Note that Java uses milliseconds.
    

    Note

    • For the old Swift 2 syntax with NSDate, see this answer.

提交回复
热议问题