Как получить секунды эпохи в Swift?
- timeIntervalSince1970
.
Как получить секунды эпохи в Swift?
- timeIntervalSince1970
.
Ответы:
Вы можете просто использовать timeIntervalSince1970
функцию NSDate .
let timeInterval = NSDate().timeIntervalSince1970
Для Swift 3.0
Date().timeIntervalSince1970
Вы можете получить это, используя следующие
Int(Date().timeIntervalSince1970)
Это на текущую дату, если вы хотите получить на данную дату
Int(myDate.timeIntervalSince1970)
Если вы хотите преобразовать обратно из эпохи времени UNIX в время Swift Date, вы можете использовать следующие
let date = Date(timeIntervalSince1970: unixtEpochTime)
1 second = -
1 millisecond = 1,000 seconds
1 microsecond = 1,000,000 seconds
Swift 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