¿Cómo se obtienen los segundos de la época en Swift?
- timeIntervalSince1970
.
¿Cómo se obtienen los segundos de la época en Swift?
- timeIntervalSince1970
.
Respuestas:
Simplemente puede usar la timeIntervalSince1970
función de NSDate .
let timeInterval = NSDate().timeIntervalSince1970
Para Swift 3.0
Date().timeIntervalSince1970
Puedes conseguirlo usando lo siguiente
Int(Date().timeIntervalSince1970)
Esto es para la fecha actual, si desea obtener para una fecha determinada
Int(myDate.timeIntervalSince1970)
Si desea volver a convertir de la época de UNIX a la hora de Swift Date, puede usar lo siguiente
let date = Date(timeIntervalSince1970: unixtEpochTime)
1 second = -
1 millisecond = 1,000 seconds
1 microsecond = 1,000,000 seconds
Swift timeIntervalSince1970
devuelve segundos con lo que se documenta como una precisión de "submilisegundos", que he observado que significa generalmente microsegundos, pero a veces una escala (un dígito a la derecha del decimal) menos o más. Cuando devuelve una escala de 5 (5 dígitos después del decimal), no sé si Swift está eliminando el 0 final o no puede producir 6 escalas de precisión. Pero cuando devuelve una escala de 7, ese dígito adicional se puede truncar porque está más allá de la precisión de microsegundos. Por lo tanto, para valores consistentes y verdaderos con precisión:
let preciseSeconds = Int(Date().timeIntervalSince1970)
let preciseMilliseconds = Int(Date().timeIntervalSince1970 * 1_000)
let preciseMicroseconds = Int(Date().timeIntervalSince1970 * 1_000_000) // most likely precise
Desafortunadamente, sin embargo, en el año 2038, los números de 32 bits no se podrán utilizar para la marca de tiempo de Unix y tendrán que ser de 64 bits.
let seconds = Date().timeIntervalSince1970
let milliseconds = Date().timeIntervalSince1970 * 1_000
let microseconds = Date().timeIntervalSince1970 * 1_000_000
Una extensión:
extension Date {
var unixTimestamp: Int64 {
return Int64(self.timeIntervalSince1970 * 1_000)
}
}
Date().unixTimestamp
Si no desea importar Foundation, es decir, para uso de Linux, etc., puede utilizar lo siguiente de CoreFoundation:
import CoreFoundation
let timestamp = CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970