【问题标题】:How to get calendar days between two dates in swift3 [duplicate]如何在swift3中获取两个日期之间的日历日[重复]
【发布时间】:2016-11-04 15:08:01
【问题描述】:

我正在尝试通过以下编码来确定 swift3 中两个日期之间的天数。不幸的是,我遇到错误并且运行失败。请让我知道如何解决以及如何在 swift3 中获取两个日期之间的日历天数。

static func getDaysList(_ startDate:String, endDate:String, interval:Int) -> [Date] {
    var dayRange = [Date]()
    let inter = TimeInterval(interval * 60 * 60)
    let ti:TimeInterval = inter
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = datetimeformat
    let dateTo = dateFormatter.date(from: endDate)

    var nextDate = dateFormatter.date(from: startDate)
    let endDate = dateTo!.addingTimeInterval(ti)
    var startTime = NSDate()

    while nextDate!.compare(endDate) == ComparisonResult.orderedAscending {
        startTime = nextDate! as NSDate
        dayRange.append(startTime as Date)
        nextDate = nextDate!.addingTimeInterval(ti)
        startTime = nextDate! as NSDate
    }

    return dayRange
}

致命错误:在展开可选值时意外发现 nil

指向let endDate = dateTo!.addingTimeInterval(ti)

【问题讨论】:

  • “获得日历日”是什么意思?“好的”输出是什么?
  • 还有什么错误?在哪几行?
  • @matt 两个日期之间的天数。
  • 我不知道那是什么意思。我知道约会是什么。但是你心目中的“一天”是什么?我是认真的:显示示例输入和所需的输出。我无法想象你在这里有什么想法。
  • @rmaddy 我已经编辑了我的问题。

标签: ios swift swift3 xcode8


【解决方案1】:

这里

 let dateTo = dateFormatter.date(from: endDate)

您的endDate 可能是一个与dateFormatter 格式不符的字符串。因此dateTonil 结束并崩溃:

let endDate = dateTo!.addingTimeInterval(ti)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    相关资源
    最近更新 更多