【问题标题】:iOS Swift - Calculate the difference between two timesiOS Swift - 计算两次之间的差异
【发布时间】:2017-09-27 01:45:22
【问题描述】:

我想知道如何计算登录时间和注销时间之间的差异,例如:登录时间:上午 8:00 和注销时间:下午 5:00,我应该得到 9 小时作为总小时数渲染。

这是保存到 Firebase 的时间格式

     // Set the time
    let timeFormatter = DateFormatter()
    timeFormatter.dateStyle = .none
    timeFormatter.timeStyle = .short
    timeFormatter.amSymbol = "AM"
    timeFormatter.pmSymbol = "PM"

    let timeString = timeFormatter.string(from: date)

【问题讨论】:

标签: ios swift time


【解决方案1】:

编辑: Found duplicate question

从登录 (loginTime) 和注销 (logoutTime) 时间创建 Date 对象 (link to question),然后像这样使用它们:

let components = Calendar.current.dateComponents([.hour, .minute], from: loginTime, to: logoutTime)

// To get the hours
print(components.hour)
// To get the minutes
print(components.minute)

【讨论】:

  • @aksh1t 我正在使用它,但 [.hour, .minute] 出现错误“表达式类型不明确,没有更多上下文”我该如何解决。
  • @ekscrypto 你能告诉我吗?为什么我会收到此错误。
  • @veerendrapratapsingh 这不是我的代码或答案。检查我的答案以了解正确的语法/用法
【解决方案2】:

登录时...

    let loginTime = Date()
    UserDefaults.standard.set(loginTime, forKey: "loginTime")

然后在注销时...

    let loginTime = UserDefaults.standard.object(forKey: "loginTime") as? Date ?? Date()
    let loginInterval = -loginTime.timeIntervalSinceNow

    let formatter = DateComponentsFormatter()
    formatter.unitsStyle = .full
    formatter.includesApproximationPhrase = false
    formatter.includesTimeRemainingPhrase = false
    formatter.allowedUnits = [.hour, .minute]

    // Use the configured formatter to generate the string.
    let userLoginTimeString = formatter.string(from: loginInterval) ?? ""
    print("user was logged in for \(userLoginTimeString)")

【讨论】:

  • 感谢您的回复@ekscrypto。我也会试试这个。祝你有美好的一天!
猜你喜欢
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
相关资源
最近更新 更多