在Swift中将Date转换为Integer

Sur*_*gch 14 time integer date swift

我正在更新我对Swift 3的一些旧的Swift 2答案.但是,这个问题的回答并不容易更新,因为问题具体要求NSDate而不是Date.所以我正在创建该问题的新版本,我可以更新我的答案.

如果我从这样的Date实例开始

let someDate = Date()
Run Code Online (Sandbox Code Playgroud)

我该如何将其转换为整数?

相关但不同

这些问题提出了不同的问题:

Sur*_*gch 71

DateInt

// 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)
Run Code Online (Sandbox Code Playgroud)

这样做的DoubleInt的转换会导致丢失毫秒.如果你需要毫秒,那么在转换之前乘以1000 Int.

IntDate

包括完整性的反向.

// convert Int to Double
let timeInterval = Double(myInt)

// create NSDate from Double (NSTimeInterval)
let myNSDate = Date(timeIntervalSince1970: timeInterval)
Run Code Online (Sandbox Code Playgroud)

只要我保持一致,我本可以使用timeIntervalSinceReferenceDate而不是timeIntervalSince1970.这假设时间间隔以秒为单位.请注意,Java使用毫秒.

注意

  • 对于旧的Swift 2语法NSDate,请参阅此答案.