Làm cách nào để bạn có được giây từ kỷ nguyên trong Swift?
- timeIntervalSince1970
.
Làm cách nào để bạn có được giây từ kỷ nguyên trong Swift?
- timeIntervalSince1970
.
Câu trả lời:
Bạn chỉ cần sử dụng timeIntervalSince1970
chức năng của NSDate .
let timeInterval = NSDate().timeIntervalSince1970
Đối với Swift 3.0
Date().timeIntervalSince1970
Bạn có thể nhận được điều đó bằng cách sử dụng sau
Int(Date().timeIntervalSince1970)
Đây là cho ngày hiện tại, nếu bạn muốn đến một ngày nhất định
Int(myDate.timeIntervalSince1970)
Nếu bạn muốn chuyển đổi lại từ kỷ nguyên thời gian UNIX thành Swift Date time, bạn có thể sử dụng sau
let date = Date(timeIntervalSince1970: unixtEpochTime)
1 second = -
1 millisecond = 1,000 seconds
1 microsecond = 1,000,000 seconds
Swift timeIntervalSince1970
trả về giây với những gì được ghi lại là độ chính xác "dưới mili giây", mà tôi đã quan sát có nghĩa là thường là micro giây nhưng đôi khi một tỷ lệ (một chữ số ở bên phải của số thập phân) ít hơn hoặc nhiều hơn. Khi nó trả về thang đo 5 (5 chữ số sau số thập phân), tôi không biết liệu Swift có bỏ dấu 0 ở cuối hay không hay nó không thể tạo ra 6 thang độ chính xác. Nhưng khi nó trả về thang điểm 7, chữ số thừa đó có thể bị cắt bớt vì nó vượt quá độ chính xác micro giây. Do đó, để có các giá trị nhất quán và chính xác-đúng:
let preciseSeconds = Int(Date().timeIntervalSince1970)
let preciseMilliseconds = Int(Date().timeIntervalSince1970 * 1_000)
let preciseMicroseconds = Int(Date().timeIntervalSince1970 * 1_000_000) // most likely precise
Tuy nhiên, thật không may, vào năm 2038, các số 32 bit sẽ không thể sử dụng được cho dấu thời gian Unix và chúng sẽ phải là 64 bit.
let seconds = Date().timeIntervalSince1970
let milliseconds = Date().timeIntervalSince1970 * 1_000
let microseconds = Date().timeIntervalSince1970 * 1_000_000
Một phần mở rộng:
extension Date {
var unixTimestamp: Int64 {
return Int64(self.timeIntervalSince1970 * 1_000)
}
}
Date().unixTimestamp
Nếu bạn không muốn nhập Foundation, tức là để sử dụng Linux, v.v., bạn có thể sử dụng cách sau từ CoreFoundation:
import CoreFoundation
let timestamp = CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970