Преобразование даты в целое число в Swift

Я обновляю некоторые из моих старых ответов Swift 2 на Swift 3. мой ответ: to этот вопрос, однако, нелегко обновить, так как вопрос конкретно запрашивает NSDate, а не Date. Поэтому я создаю новую версию этого вопроса, для которой я могу обновить свой ответ.

вопрос

если я начну с Date экземпляр такой

let someDate = Date()

как бы я конвертировать в целое число?

родственные, но разные

эти вопросы задают разные вещи:

1 ответов


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)

делать Double до Int преобразование приводит к потере миллисекунд. Если вам нужны миллисекунды, то умножьте на 1000 перед преобразованием в Int.

Int to Date

включая обратное для полноты.

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

// create NSDate from Double (NSTimeInterval)
let myNSDate = Date(timeIntervalSince1970: timeInterval)

я мог бы также использовать timeIntervalSinceReferenceDate вместо timeIntervalSince1970 пока я был последователен. Это предполагает, что интервал времени составляет секунды. Отмечать что Java использует миллисекунд.

Примечание

  • для старого синтаксиса Swift 2 с NSDate см. ответ.