【发布时间】:2018-11-25 20:50:35
【问题描述】:
我正在从服务中获取登机时间(比如说 BT-登机时间) 我需要找出登机时间和当前时间之间的差异,然后找出 Hour, Min. 的差异。
条件是用户可以检查世界上任何国家/地区之间的差异。所以我使用 UTC 来计算,但它给出了正确的结果,请帮助我。
func dayStringFromTime() -> String {
let currentTimeUnix = Date().timeIntervalSince1970
let date = NSDate(timeIntervalSince1970: currentTimeUnix)
let dateFormatter = DateFormatter()
// dateFormatter.dateFormat = "HH:mm:ss"
return date.description
}
let CT = dayStringFromTime() //time1
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-mm-dd HH:mm:ss"
let CTDate = formatter.date(from: CT)
let time1 = boardingDateTime//timeformatter.date(from: CT)
let time2 = CT_Date//timeformatter.date(from: ETD)
//You can directly use from here if you have two dates
let interval = time1.timeIntervalSince(time2! as Date)
let hour = (interval ) / 3600;
let minute = interval.truncatingRemainder(dividingBy: 3600) / 60
let intervalInt = Int(interval)
print("\(intervalInt < 0 ? "-" : "+") \(Int(hour)) Hours \(Int(Int(minute))) Minutes")
let minText = Int(minute) > 0 && Int(minute) != 0 ? " \(Int(minute)) min" : (Int(minute) < 0 ? " \(Int(abs(minute))) min" : "")
let hrText = Int(hour) > 0 && Int(hour) != 0 ? " \(Int(hour)) hr" : (Int(hour) < 0 ? " \(Int(abs(hour))) hr" : "")
这个 url https://stackoverflow.com/a/28608779/3400991 显示了这个结果的确切问题,请帮助
【问题讨论】:
-
您使用的是哪个版本的 Swift?
-
我正在使用 Swift 4
-
看看DateComponentsFormatter 摆脱奇怪的日期数学。
-
@DanielT. 的回答将为您提供正确的结果如果您已正确设置登机时间。你能提供你格式化它的代码吗?您是否为其提供了正确的时区?
-
@fguchelaar 没有格式化
Date对象。只要他正确地创建它(大概来自网络响应?)我的答案就会奏效。我喜欢@MadProgrammer 对DateComponentsFormatter的引用。
标签: ios swift dateformatter