Answers:
您可以简单地使用NSDate的timeIntervalSince1970
功能。
let timeInterval = NSDate().timeIntervalSince1970
对于Swift 3.0
Date().timeIntervalSince1970
您可以使用以下方法获得
Int(Date().timeIntervalSince1970)
这是当前日期,如果要获取给定日期
Int(myDate.timeIntervalSince1970)
如果要从UNIX时间时代转换回Swift日期时间,可以使用以下命令
let date = Date(timeIntervalSince1970: unixtEpochTime)
1 second = -
1 millisecond = 1,000 seconds
1 microsecond = 1,000,000 seconds
Swift timeIntervalSince1970
返回的秒数具有所谓的“毫秒级”精度,据我观察,该精度通常为微秒,但有时会少一些或多一种标度(小数点后一位)。当它返回5的小数位数(小数点后5位)时,我不知道Swift是丢弃尾随的0还是不能产生6的小数位数。但是,当返回的小数位数为7时,多余的数字可能会被截断,因为它的精度超出了微秒。因此,对于一致且精确的真值:
let preciseSeconds = Int(Date().timeIntervalSince1970)
let preciseMilliseconds = Int(Date().timeIntervalSince1970 * 1_000)
let preciseMicroseconds = Int(Date().timeIntervalSince1970 * 1_000_000) // most likely precise
但是不幸的是,在2038年,32位数字将不能用于Unix时间戳,而必须是64位。
let seconds = Date().timeIntervalSince1970
let milliseconds = Date().timeIntervalSince1970 * 1_000
let microseconds = Date().timeIntervalSince1970 * 1_000_000
扩展名:
extension Date {
var unixTimestamp: Int64 {
return Int64(self.timeIntervalSince1970 * 1_000)
}
}
Date().unixTimestamp
如果您不想导入Foundation,即用于Linux等,则可以使用CoreFoundation中的以下内容:
import CoreFoundation
let timestamp = CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970