【发布时间】:2016-11-29 06:55:25
【问题描述】:
我需要找出当前时间(以秒为单位)和未来开始时间(以秒为单位从我的网络服务中获取)之间的差异。 我编写了以下代码:
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小时左右小时。我该如何解决?我已经经历了很多相同的问题,但没有任何效果。任何帮助,将不胜感激。
【问题讨论】:
-
NSDate 是一个绝对时间点,没有任何时区信息。 1480400929 是“2016 年 11 月 29 日 06:28:49 GMT”,1480552620 是“2016 年 12 月 1 日 00:37:00 GMT”。这些时间之间的差异约为 42 小时。 – 请解释您期望的结果以及为什么。
-
我想要我当前时间(2016 年 11 月 29 日星期二 11:58:49)与我从服务器获取的开始时间 2016-11-30 17:37:00 之间的差异跨度>
-
您是否将服务器时间作为字符串获取?你如何将该字符串转换为 NSDate?服务器时区是什么?你的时区是?
-
是的,我将它作为毫秒形式的字符串作为 1480552620000。我通过上面提到的这一行将其转换为 int64:var time = Int64(timeArr[indexPath.row])。我的时区是 GMT + 5:30
-
从服务器发送的时间戳 1480552620 是“2016-12-01 00:37:00 GMT”,即您的 GMT+5 中的“2016-12-01 06:07:00”: 30 时区,而不是“2016-11-30 17:37:00”
标签: swift datetime timezone swift3 date-difference