【问题标题】:Swift3 - Calculate time difference between now and date from DatabaseSwift3 - 从数据库计算现在和日期之间的时间差
【发布时间】:2017-10-14 12:20:22
【问题描述】:

我想从数据库中计算现在和日期之间的时间差。

“Fri Oct 13 2017 15:14:27 GMT+0200 (CEST)”的正确 dateFormatter.dateFormat 是什么?

这是我的代码试用版..

http://userguide.icu-project.org/formatparse/datetime

    let input = "Fri Oct 13 2017 15:14:27 GMT+0200 (CEST)"

    let dateFormatter = DateFormatter()
    var userCalendar = Calendar.current
    userCalendar.timeZone = TimeZone.current
    let requestedComponent: Set<Calendar.Component> = [.hour,.minute,.second]
    dateFormatter.dateFormat = "EEE MMM dd yyyy kk:mm:ss"
    let startTime = Date()
    let endTime = dateFormatter.date(from: input)
    let timeDifference = userCalendar.dateComponents(requestedComponent, from: endTime!, to: startTime)

    print(timeDifference)

    let date = Calendar(identifier: .gregorian).date(from: timeDifference)
    dateFormatter.dateFormat = "HH:mm:ss"
    let dateString =  dateFormatter.string(from: date!)

    print(dateString)

这适用于:

dateFormatter.dateFormat = "dd/MM/yy hh:mm:ss"
let endTime = dateFormatter.date(from: "14/10/17 11:00:00")

【问题讨论】:

    标签: ios swift datetime timestamp dateformatter


    【解决方案1】:

    您的字符串中有两个时区,因此您需要删除最后一个并在解析之前转义“GMT”。另外kk 它用于从 01 到 24 的几个小时,你想要的是 00-23 在这种情况下你需要使用HH

    let input = "Fri Oct 13 2017 15:14:27 GMT+0200 (CEST)"
    let dateString = input.components(separatedBy: " ").dropLast().joined(separator: " ")
    let dateFormatter = DateFormatter()
    dateFormatter.locale = Locale(identifier: "en_US_POSIX")
    dateFormatter.dateFormat = "EEE MMM dd yyyy HH:mm:ss 'GMT'Z"
    let date = dateFormatter.date(from: dateString)
    

    要显示经过的时间,您可以使用 DateComponentsFormatter 并使用 unitsStyle .positional:

    let elapsedTime = Date().timeIntervalSince(date)
    let dateComponentsFormatter = DateComponentsFormatter()
    dateComponentsFormatter.unitsStyle = .positional
    dateComponentsFormatter.string(from: elapsedTime)   // "23:32:34"
    

    【讨论】:

      猜你喜欢
      • 2020-02-14
      • 2021-12-19
      • 2010-11-07
      • 2021-11-25
      • 2011-08-01
      • 1970-01-01
      • 2016-08-14
      • 1970-01-01
      相关资源
      最近更新 更多