Comment obtenez-vous les secondes de l'époque dans Swift?
- timeIntervalSince1970
.
Comment obtenez-vous les secondes de l'époque dans Swift?
- timeIntervalSince1970
.
Réponses:
Vous pouvez simplement utiliser la timeIntervalSince1970
fonction de NSDate .
let timeInterval = NSDate().timeIntervalSince1970
Pour Swift 3.0
Date().timeIntervalSince1970
Vous pouvez l'obtenir en utilisant ce qui suit
Int(Date().timeIntervalSince1970)
Ceci est pour la date actuelle, si vous souhaitez obtenir pour une date donnée
Int(myDate.timeIntervalSince1970)
Si vous souhaitez reconvertir de l'époque UNIX en heure Swift Date, vous pouvez utiliser
let date = Date(timeIntervalSince1970: unixtEpochTime)
1 second = -
1 millisecond = 1,000 seconds
1 microsecond = 1,000,000 seconds
Swift's timeIntervalSince1970
renvoie les secondes avec ce qui est documenté comme une précision "inférieure à la milliseconde", ce que j'ai observé pour signifier généralement des microsecondes mais parfois une échelle (un chiffre à droite de la décimale) de moins ou plus. Quand il renvoie une échelle de 5 (5 chiffres après la décimale), je ne sais pas si Swift laisse tomber le 0 final ou s'il ne peut pas produire 6 échelles de précision. Mais lorsqu'il renvoie une échelle de 7, ce chiffre supplémentaire peut être tronqué car il dépasse la précision de la microseconde. Par conséquent, pour des valeurs cohérentes et précises:
let preciseSeconds = Int(Date().timeIntervalSince1970)
let preciseMilliseconds = Int(Date().timeIntervalSince1970 * 1_000)
let preciseMicroseconds = Int(Date().timeIntervalSince1970 * 1_000_000) // most likely precise
Malheureusement, cependant, en 2038, les nombres 32 bits ne seront pas utilisables pour l'horodatage Unix et ils devront être 64 bits.
let seconds = Date().timeIntervalSince1970
let milliseconds = Date().timeIntervalSince1970 * 1_000
let microseconds = Date().timeIntervalSince1970 * 1_000_000
Une extension:
extension Date {
var unixTimestamp: Int64 {
return Int64(self.timeIntervalSince1970 * 1_000)
}
}
Date().unixTimestamp
Si vous ne souhaitez pas importer Foundation, c'est-à-dire pour une utilisation Linux, etc., vous pouvez utiliser ce qui suit à partir de CoreFoundation:
import CoreFoundation
let timestamp = CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970