两个 dateTimes 之间的差异(以秒为单位)因时区不同而有所差异 - Swift 3
Difference between two dateTimes in seconds vary due to different time zones - Swift 3
我需要找出当前时间(以秒为单位)和未来开始时间(以秒为单位从我的网络服务中获取)之间的差异。
我编写了以下代码:
let currentTime = Int64(Date().timeIntervalSince1970)
var time = Int64(timeArr[indexPath.row])
print("\(currentTime) vs \(time)")
time = time - currentTime
print("difference in time : \(time)")
let seconds = time % 60
let minutes = (time / 60) % 60
let hours = (time / 3600)
我的控制台显示了这个输出:
1480400929 vs 1480552620
difference in time : 151691
问题是我的当前时间是 Tue Nov 29 2016 11:58:49
,开始时间是 2016-11-30 17:37:00
,所以时间差应该在 30 小时左右,而由于以下原因,它需要不同时区的时间大约需要 42 小时。我该如何解决?我已经回答了很多相同的问题,但没有任何效果。任何帮助,将不胜感激。
如果您想要 Hours
、Minutes
和 seconds
中两个日期之间的差异,您可以像这样使用 DateComponent
。
let component = Calendar.current.dateComponents([.hour, .minute, .second], from: Date(), to: startDate)
let hours = component.hour ?? 0
let minutes = component.minute ?? 0
let seconds = component.second ?? 0
编辑: 要从毫秒获取日期,请像这样使用 Date(timeIntervalSince1970:)
。
let startDate = Date(timeIntervalSince1970: miliSeconds / 1000)
您也可以像这样使用 DateFormatter
将字符串转换为日期。
let stringDate = "2016-11-30 17:37:00"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = TimeZone(abbreviation: "GMT")
if let startDate = dateFormatter.date(from: stringDate) {
print(startDate)
}
我需要找出当前时间(以秒为单位)和未来开始时间(以秒为单位从我的网络服务中获取)之间的差异。 我编写了以下代码:
let currentTime = Int64(Date().timeIntervalSince1970)
var time = Int64(timeArr[indexPath.row])
print("\(currentTime) vs \(time)")
time = time - currentTime
print("difference in time : \(time)")
let seconds = time % 60
let minutes = (time / 60) % 60
let hours = (time / 3600)
我的控制台显示了这个输出:
1480400929 vs 1480552620
difference in time : 151691
问题是我的当前时间是 Tue Nov 29 2016 11:58:49
,开始时间是 2016-11-30 17:37:00
,所以时间差应该在 30 小时左右,而由于以下原因,它需要不同时区的时间大约需要 42 小时。我该如何解决?我已经回答了很多相同的问题,但没有任何效果。任何帮助,将不胜感激。
如果您想要 Hours
、Minutes
和 seconds
中两个日期之间的差异,您可以像这样使用 DateComponent
。
let component = Calendar.current.dateComponents([.hour, .minute, .second], from: Date(), to: startDate)
let hours = component.hour ?? 0
let minutes = component.minute ?? 0
let seconds = component.second ?? 0
编辑: 要从毫秒获取日期,请像这样使用 Date(timeIntervalSince1970:)
。
let startDate = Date(timeIntervalSince1970: miliSeconds / 1000)
您也可以像这样使用 DateFormatter
将字符串转换为日期。
let stringDate = "2016-11-30 17:37:00"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = TimeZone(abbreviation: "GMT")
if let startDate = dateFormatter.date(from: stringDate) {
print(startDate)
}