【问题标题】:how do i find number of days between 2 days in swift 5? [duplicate]我如何在swift 5中找到2天之间的天数? [复制]
【发布时间】:2020-06-13 04:05:58
【问题描述】:

如何快速找到获取时间。

【问题讨论】:

  • 请编辑您的问题并显示您尝试过的内容以及您面临的问题。您还应该改进您的帖子并更具体。如果一个日期是晚上 11:59,另一个日期是第二天上午 12:00,您期望的结果是什么。它被认为是一天还是零?

标签: swift


【解决方案1】:

如果您的两个日期是字符串,请将它们转换为Date 对象(使用DateFormatter),然后您可以使用Calendar 方法dateComponents(_:from:to:) 来获取天数:

func days(from: String, to: String) -> Int? {
    let formatter = DateFormatter()
    formatter.dateFormat = "MM/dd/yyyy"

    guard
        let date1 = formatter.date(from: from),
        let date2 = formatter.date(from: to)
    else {
        return nil
    }

    return Calendar.current.dateComponents([.day], from: date1, to: date2).day
}

【讨论】:

  • 这可能不会返回确切的天数。如果没有时间信息,它可能会在一天凌晨 1:00(夏令时)和另一天午夜。您应该使用中午时间进行这种日历计算
  • 在解析固定日期格式时,Yiu 还应将语言环境设置为“en_US_POSIX”。我还会设置日历属性以防万一,以避免一些夏令时问题。 stackoverflow.com/a/32408916/2303865
  • 试试func days(from: String, to: String) -> Int? { let formatter = DateFormatter() formatter.locale = Locale.init(identifier: "pt_BR") formatter.dateFormat = "MM/dd/yyyy" guard let date1 = formatter.date(from: from), let date2 = formatter.date(from: to) else { return nil } return Calendar.current.dateComponents([.day], from: date1, to: date2).day } days(from: "10/18/2015", to: "10/19/2015") // 无
  • 我已将定位设置为巴西,但可以是任何位置
  • 现在添加 formatter.calendar = .current 它将返回 0
猜你喜欢
  • 2016-11-11
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多