如何在Swift中的两个Unix时间之间找到几分钟的差异



我需要找到两个 Unix epoch time之间的区别。

let currentTime = Date().timeIntervalSince1970
let comingFromTheServer = TimeInterval(1552078800000)

如何在两次之间找到几分钟的差异?两者都是当地时区的Epoch time

编辑

let currentTime = Date().timeIntervalSince1970  // printing 25842307795.623497 which is somewhere in january
let startedTinme = TimeInterval(1552090800000 / 1000)
print((currentTime - startedTinme) / 60) 
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.minute, .second]
formatter.unitsStyle = .abbreviated
let formatted = formatter.string(for: currentTime - startedTinme)
print(formatted)

编辑2

我想发生了一些沟通不畅。我想找出current timespecific时间之间的区别。我尝试了代码的(更新)版本:

我正在使用此扩展名来获得当前时间以毫秒(时代时间)

extension Date {
var millisecondsSince1970:Int {
    return Int((self.timeIntervalSince1970 * 1000.0).rounded())
}
init(milliseconds:Int) {
    self = Date(timeIntervalSince1970: TimeInterval(milliseconds) / 1000)
}
}

我从服务器(即1552086180000)接收时间,即5:03 PM

我当前的时间是5:12 PM。因此,差异应为9 Minutes。为此,我正在使用

let currentTime = Date().millisecondsSince1970
let startedTinme = TimeInterval(1552086180000) / 1000
How can I get the difference of `9` minutes here ?

首先,您必须正确将服务器的时间转换为TimeInterval。unix时间通常以毫秒为单位,而TimeInterval为几秒钟,因此:

let currentTime = Date().timeIntervalSince1970
let comingFromTheServer = TimeInterval(1552078800000) / 1000

然后只计算差异并转换为分钟:

print((currentTime - comingFromTheServer) / 60) // 160

或格式:

let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.minute, .second]
formatter.unitsStyle = .abbreviated
let formatted = formatter.string(from: currentTime - comingFromTheServer) ?? ""
print(formatted) // 160m 41s

考虑您的millisecondsSince1970功能,只需将其转换回秒:

let currentTime = TimeInterval(Date().millisecondsSince1970) / 1000
let startedTime = TimeInterval(1552086180000) / 1000

最新更新