Bagaimana Anda mendapatkan detik dari epoch di Swift?
- timeIntervalSince1970
.
Bagaimana Anda mendapatkan detik dari epoch di Swift?
- timeIntervalSince1970
.
Jawaban:
Anda cukup menggunakan timeIntervalSince1970
fungsi NSDate .
let timeInterval = NSDate().timeIntervalSince1970
Untuk Swift 3.0
Date().timeIntervalSince1970
Anda bisa mendapatkannya dengan mengikuti
Int(Date().timeIntervalSince1970)
Ini untuk tanggal sekarang, jika Anda ingin mendapatkan untuk tanggal tertentu
Int(myDate.timeIntervalSince1970)
Jika Anda ingin mengkonversi kembali dari waktu UNIX ke waktu Tanggal Swift, Anda dapat menggunakan berikut
let date = Date(timeIntervalSince1970: unixtEpochTime)
1 second = -
1 millisecond = 1,000 seconds
1 microsecond = 1,000,000 seconds
Swift timeIntervalSince1970
mengembalikan detik dengan apa yang didokumentasikan sebagai presisi "sub-milidetik", yang saya amati biasanya berarti mikrodetik tetapi terkadang satu skala (satu digit di sebelah kanan desimal) kurang atau lebih. Ketika mengembalikan skala 5 (5 digit setelah desimal), saya tidak tahu apakah Swift menjatuhkan 0 di belakang atau tidak dapat menghasilkan 6 skala presisi. Tetapi ketika ia mengembalikan skala 7, digit tambahan itu dapat dipotong karena di luar presisi mikrodetik. Oleh karena itu, untuk nilai yang konsisten dan presisi-benar:
let preciseSeconds = Int(Date().timeIntervalSince1970)
let preciseMilliseconds = Int(Date().timeIntervalSince1970 * 1_000)
let preciseMicroseconds = Int(Date().timeIntervalSince1970 * 1_000_000) // most likely precise
Sayangnya, bagaimanapun, di tahun 2038, nomor 32-bit tidak dapat digunakan untuk stempel waktu Unix dan harus 64-bit.
let seconds = Date().timeIntervalSince1970
let milliseconds = Date().timeIntervalSince1970 * 1_000
let microseconds = Date().timeIntervalSince1970 * 1_000_000
Sebuah ekstensi:
extension Date {
var unixTimestamp: Int64 {
return Int64(self.timeIntervalSince1970 * 1_000)
}
}
Date().unixTimestamp
Jika Anda tidak ingin mengimpor Foundation, yaitu untuk penggunaan Linux dll, Anda dapat menggunakan berikut ini dari CoreFoundation:
import CoreFoundation
let timestamp = CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970