Як ви отримуєте секунди від епохи в Swift?
- timeIntervalSince1970
.
Як ви отримуєте секунди від епохи в Swift?
- timeIntervalSince1970
.
Відповіді:
Ви можете просто використовувати функцію NSDate timeIntervalSince1970
.
let timeInterval = NSDate().timeIntervalSince1970
Для Swift 3.0
Date().timeIntervalSince1970
Ви можете отримати це за допомогою наступного
Int(Date().timeIntervalSince1970)
Це для поточної дати, якщо ви хочете отримати для даної дати
Int(myDate.timeIntervalSince1970)
Якщо ви хочете перетворити назад з епохи UNIX у часовий час Swift, ви можете скористатися наступним
let date = Date(timeIntervalSince1970: unixtEpochTime)
1 second = -
1 millisecond = 1,000 seconds
1 microsecond = 1,000,000 seconds
Свіфт timeIntervalSince1970
повертає секунди з точністю, яка задокументована як "субмілісекундна" точність, яку я спостерігав, як правило, означає мікросекунди, але іноді на одну шкалу (одна цифра праворуч від десяткової коми) менше або більше. Коли він повертає шкалу 5 (5 цифр після десяткової), я не знаю, чи Swift скидає пробіл 0 або не може створити 6 шкал точності. Але коли він повертає шкалу 7, ця додаткова цифра може бути урізана, тому що це перевищує мікросекундну точність. Отже, для послідовних і точних значень:
let preciseSeconds = Int(Date().timeIntervalSince1970)
let preciseMilliseconds = Int(Date().timeIntervalSince1970 * 1_000)
let preciseMicroseconds = Int(Date().timeIntervalSince1970 * 1_000_000) // most likely precise
На жаль, однак у 2038 році 32-розрядні номери не використовуватимуться для часової мітки Unix, і вони повинні бути 64-бітовими.
let seconds = Date().timeIntervalSince1970
let milliseconds = Date().timeIntervalSince1970 * 1_000
let microseconds = Date().timeIntervalSince1970 * 1_000_000
Розширення:
extension Date {
var unixTimestamp: Int64 {
return Int64(self.timeIntervalSince1970 * 1_000)
}
}
Date().unixTimestamp
Якщо ви не хочете імпортувати Foundation, тобто для використання Linux тощо, ви можете використовувати наступне з CoreFoundation:
import CoreFoundation
let timestamp = CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970