Wie bekommt man die Sekunden aus der Epoche in Swift?
- timeIntervalSince1970
.
Wie bekommt man die Sekunden aus der Epoche in Swift?
- timeIntervalSince1970
.
Antworten:
Sie können einfach die timeIntervalSince1970
Funktion von NSDate verwenden.
let timeInterval = NSDate().timeIntervalSince1970
Für Swift 3.0
Date().timeIntervalSince1970
Sie können dies mit folgendem erhalten
Int(Date().timeIntervalSince1970)
Dies ist für das aktuelle Datum, wenn Sie für ein bestimmtes Datum erhalten möchten
Int(myDate.timeIntervalSince1970)
Wenn Sie von der UNIX-Zeitepoche zurück in die Swift Date-Zeit konvertieren möchten, können Sie Folgendes verwenden
let date = Date(timeIntervalSince1970: unixtEpochTime)
1 second = -
1 millisecond = 1,000 seconds
1 microsecond = 1,000,000 seconds
Swift's timeIntervalSince1970
gibt Sekunden mit einer Genauigkeit von "Sub-Millisekunden" zurück, die normalerweise Mikrosekunden, manchmal aber auch eine Skala (eine Ziffer rechts von der Dezimalstelle) weniger oder mehr bedeutet. Wenn eine Skala von 5 (5 Stellen nach der Dezimalstelle) zurückgegeben wird, weiß ich nicht, ob Swift die nachfolgende 0 fallen lässt oder keine 6-Skalen mit Genauigkeit erzeugen kann. Wenn jedoch eine Skala von 7 zurückgegeben wird, kann diese zusätzliche Ziffer abgeschnitten werden, da sie über die Genauigkeit von Mikrosekunden hinausgeht. Für konsistente und präzise Werte:
let preciseSeconds = Int(Date().timeIntervalSince1970)
let preciseMilliseconds = Int(Date().timeIntervalSince1970 * 1_000)
let preciseMicroseconds = Int(Date().timeIntervalSince1970 * 1_000_000) // most likely precise
Leider können im Jahr 2038 32-Bit-Zahlen für den Unix-Zeitstempel nicht verwendet werden, und sie müssen 64-Bit sein.
let seconds = Date().timeIntervalSince1970
let milliseconds = Date().timeIntervalSince1970 * 1_000
let microseconds = Date().timeIntervalSince1970 * 1_000_000
Eine Erweiterung:
extension Date {
var unixTimestamp: Int64 {
return Int64(self.timeIntervalSince1970 * 1_000)
}
}
Date().unixTimestamp
Wenn Sie Foundation nicht importieren möchten, dh für Linux usw., können Sie Folgendes aus CoreFoundation verwenden:
import CoreFoundation
let timestamp = CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970