【发布时间】:2018-04-26 10:55:41
【问题描述】:
我正在处理我保留登录和注销日志的日期和时间。例如登录时间是 12:45,注销时间是 1:45,所以需要检查总小时的用户在线。我有时间,下面是我试图通过添加来检查最大小时数的代码,但我没有得到我需要的输出。
//Current time
let formatter = DateFormatter()
formatter.timeStyle = .medium
formatter.dateStyle = .none
outTimeString = formatter.string(from: currentDateTime) as NSString
//LoggedIn Time
inTimeString = "12:49:50"
let inFormatter = DateFormatter()
inFormatter.dateFormat = "HH:mm:ss"
let outFormatter = DateFormatter()
outFormatter.dateFormat = "hh:mm"
let inTime = inTimeString
let date = inFormatter.date(from: inTime)!
let inStr = outFormatter.string(from: date)
print(inStr)->12:49:50
let outTime = outTimeString
let outDate = inFormatter.date(from: outTime as String)!
let outStr = outFormatter.string(from: outDate)
print(outStr)->16:10:15
//Adding 4 hour to logged in timw
let calendar = NSCalendar.current
let finaldate = date.addingTimeInterval(-4 * 60.0 * 60.0)
print(finaldate)->2000-01-01 03:19:50 +0000
问题是当登录时间增加 4 小时时,我得到了错误的输出。
我需要总登录时间或在原始登录时间的基础上增加 4 小时。任何人都可以。
非常感谢您的帮助。
【问题讨论】:
-
这行不通。您至少需要一天
component。保留代表完整日期的时间戳。然后进行数学运算(使用Calendar)并去除不需要的日期组件。并且不要在 Swift 3+ 中使用NSString和NSCalendar