swift - 如何计算两个日期之间的天数

标签 swift

我已经创建了一些代码来检索当前日期并将其格式化为正确的格式,并且我有第二个日期,它是一个字符串。我如何计算天数差异。我已经阅读了很多帖子,但是对如何实现它感到非常困惑。

当前代码:

    let date = Date()
    let formatter = DateFormatter()
    formatter.dateFormat = "dd.MM.yyyy"

    let currentDateFormatted = formatter.string(from: date)
    let endDate = "16.05.2018"

我已经尝试了下面的代码,但是我得到了一个错误“没有更多上下文的表达式类型不明确”。

    let date = Date()
    let formatter = DateFormatter()
    formatter.dateFormat = "dd.MM.yyyy"

    let currentDateFormatted = formatter.string(from: date)
    let endDate = "16.05.2018"
    let endDateFormatted= formatter.date(from: endDate)

    let calendar = Calendar.current 
    let components = calendar.dateComponents([.day], from: currentDateFormatted, to: endDateFormatted)

最佳答案

您需要使用日期格式化程序将 endDate 字符串转换为 Date。然后将 date 和新的 Date 传递给 dateComponents 调用。然后访问生成的 componentsday 属性。

并使用日历,而不是 NSCalendar。

let startDate = Date()
let endDateString = "16.05.2018"

let formatter = DateFormatter()
formatter.dateFormat = "dd.MM.yyyy"

if let endDate = formatter.date(from: endDateString) {
    let components = Calendar.current.dateComponents([.day], from: startDate, to: endDate)
    print("Number of days: \(components.day!)")
} else {
    print("\(endDateString) can't be converted to a Date")
}

关于swift - 如何计算两个日期之间的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50379492/

相关文章:

xcode - 是否可以在构建 Xcode 项目时转储 AST?

ios - DateFormatter 返回 nil 以及 TimeZone 和 Locale 的特定组合

ios - 删除 SKSpriteNode 的所有副本

swift - 如何从 Decodable 枚举中获取原始值?

ios - 如何在 iOS Swift 中设置延迟?

Swift,将发送者中的参数传递给函数

ios - 距离计算,acos = Nan 而不是0

ios - 为什么从未执行过的 Swift 3 代码会抛出运行时错误?

ios - animateWithTextures 错误,XCode 6 beta,.swift SpriteKit

ios - Xcode 7 用户界面测试 : Dismiss Push and Location alerts