用"nextDate(after:matching.."向后搜索日期,只是时间长得奇怪



我使用nextDate(after:matching:matchingPolicy:repeatedTimePolicy:direction:)向后搜索日期。

我想搜索前一个月的23号,但我从2022年跳到了1995年。

这是一个错误,还是我只是错过了一些日历方面的东西,使这个结果真正正确?

var calendar: Calendar = .autoupdatingCurrent
calendar.timeZone = TimeZone(identifier: "Europe/Stockholm")!
let date = Date(timeIntervalSince1970: 1666310400.0) // "Oct 21, 2022 at 2:00 AM"
print(date) // "2022-10-21 00:00:00 +0000n"
calendar.nextDate(after: date, // "Sep 23, 1995 at 12:00 AM" ??
matching: DateComponents(day: 23),
matchingPolicy: .previousTimePreservingSmallerComponents,
direction: .backward)

这里有一个简单的替代方案来完成相同的事情

var previous = calendar.date(bySetting: .day, value: 23, of: date)!
while previous > date {
previous = calendar.date(byAdding: .month, value: -1, to: previous)!
}

相关内容

  • 没有找到相关文章

最新更新