Come si ottengono i secondi dell'epoca in Swift?
- timeIntervalSince1970
.
Come si ottengono i secondi dell'epoca in Swift?
- timeIntervalSince1970
.
Risposte:
Puoi semplicemente usare la timeIntervalSince1970
funzione di NSDate .
let timeInterval = NSDate().timeIntervalSince1970
Per Swift 3.0
Date().timeIntervalSince1970
Puoi ottenerlo usando quanto segue
Int(Date().timeIntervalSince1970)
Questo è per la data corrente, se vuoi ottenere per una determinata data
Int(myDate.timeIntervalSince1970)
Se vuoi riconvertire da UNIX time epoch a Swift Date time, puoi usare quanto segue
let date = Date(timeIntervalSince1970: unixtEpochTime)
1 second = -
1 millisecond = 1,000 seconds
1 microsecond = 1,000,000 seconds
Swift timeIntervalSince1970
restituisce i secondi con quella che è documentata come precisione "sub-millisecondo", che ho osservato significare solitamente microsecondi ma a volte una scala (una cifra a destra del decimale) in meno o in più. Quando restituisce una scala di 5 (5 cifre dopo il decimale), non so se Swift stia lasciando cadere lo 0 finale o non potrebbe produrre 6 scale di precisione. Ma quando restituisce una scala di 7, quella cifra aggiuntiva può essere troncata perché è oltre la precisione del microsecondo. Pertanto, per valori coerenti e accurati:
let preciseSeconds = Int(Date().timeIntervalSince1970)
let preciseMilliseconds = Int(Date().timeIntervalSince1970 * 1_000)
let preciseMicroseconds = Int(Date().timeIntervalSince1970 * 1_000_000) // most likely precise
Sfortunatamente, tuttavia, nell'anno 2038, i numeri a 32 bit non saranno utilizzabili per il timestamp Unix e dovranno essere a 64 bit.
let seconds = Date().timeIntervalSince1970
let milliseconds = Date().timeIntervalSince1970 * 1_000
let microseconds = Date().timeIntervalSince1970 * 1_000_000
Un'estensione:
extension Date {
var unixTimestamp: Int64 {
return Int64(self.timeIntervalSince1970 * 1_000)
}
}
Date().unixTimestamp
Se non si desidera importare Foundation, ad esempio per Linux, ecc., È possibile utilizzare quanto segue da CoreFoundation:
import CoreFoundation
let timestamp = CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970