When I convert Unix epoch time to milliseconds, it's getting rounded.
Code:
import Foundation
extension Date {
public func getMilliSeconds()-> TimeInterval {
return TimeInterval(self.timeIntervalSince1970)
}
}
let epochTime: TimeInterval = 1597269862.9328
print("\(epochTime) Precise Epoch Time /// (notice the 8 is the last digit)")
let convertedTime = Date(timeIntervalSince1970: epochTime)
print("\(convertedTime) Time converted To Swift Date")
let df = DateFormatter()
df.dateFormat = "y-MM-dd H:m:ss.SSSS"
let withMilli = df.string(from: convertedTime)
print("\(withMilli) Time with milliseconds using Date Formatter /// (notice 8 is missing and this was rounded to .9330")
if let convertedBackToEpochTime = df.date(from: withMilli) {
print("\(convertedBackToEpochTime.getMilliSeconds()) Time converted back to Unix epoch time")
}
Log:
1597269862.9328 Precise Epoch Time /// (notice the 8 is the last digit)
2020-08-12 22:04:22 +0000 Time converted To Swift Date
2020-08-12 15:4:22.9330 Time with milliseconds using Date Formatter /// (notice 8 is missing and this was rounded to .9330
1597269862.933 Time converted back to Unix epoch time
I started with 1597269862.9328
and ended with 1597269862.933
.
How can I get the date back to exactly what I started with: 1597269862.9328
?