Como você obtém os segundos da época em Swift?
- timeIntervalSince1970
.
Como você obtém os segundos da época em Swift?
- timeIntervalSince1970
.
Respostas:
Você pode simplesmente usar a timeIntervalSince1970
função NSDate .
let timeInterval = NSDate().timeIntervalSince1970
Para Swift 3.0
Date().timeIntervalSince1970
Você pode conseguir isso usando o seguinte
Int(Date().timeIntervalSince1970)
Isto é para a data atual, se você quiser obter para uma determinada data
Int(myDate.timeIntervalSince1970)
Se você deseja converter de volta da época do tempo UNIX para a hora Swift Date, você pode usar o seguinte
let date = Date(timeIntervalSince1970: unixtEpochTime)
1 second = -
1 millisecond = 1,000 seconds
1 microsecond = 1,000,000 seconds
O Swift timeIntervalSince1970
retorna segundos com o que está documentado como precisão de "submilissegundos", que eu observei significar geralmente microssegundos, mas às vezes uma escala (um dígito à direita do decimal) a menos ou mais. Quando retorna uma escala de 5 (5 dígitos após o decimal), não sei se o Swift está descartando o 0 final ou não conseguiu produzir 6 escalas de precisão. Mas quando retorna uma escala de 7, aquele dígito extra pode ser truncado porque está além da precisão de microssegundos. Portanto, para valores consistentes e verdadeiros de precisão:
let preciseSeconds = Int(Date().timeIntervalSince1970)
let preciseMilliseconds = Int(Date().timeIntervalSince1970 * 1_000)
let preciseMicroseconds = Int(Date().timeIntervalSince1970 * 1_000_000) // most likely precise
Infelizmente, no entanto, no ano de 2038, os números de 32 bits não serão utilizáveis para o carimbo de data / hora Unix e terão que ser de 64 bits.
let seconds = Date().timeIntervalSince1970
let milliseconds = Date().timeIntervalSince1970 * 1_000
let microseconds = Date().timeIntervalSince1970 * 1_000_000
Uma extensão:
extension Date {
var unixTimestamp: Int64 {
return Int64(self.timeIntervalSince1970 * 1_000)
}
}
Date().unixTimestamp
Se você não quiser importar o Foundation, ou seja, para uso em Linux etc., você pode usar o seguinte do CoreFoundation:
import CoreFoundation
let timestamp = CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970