我正在尝试使用 Swift 获取给定日历周和年份的一周第一天的日期。
let calendar = Calendar(identifier: .gregorian)
var dayComponent = DateComponents()
dayComponent.weekOfYear = 7
dayComponent.weekday = 1
dayComponent.year = 2016
var date = calendar.date(from: dayComponent as DateComponents)
第一个问题是 weekday = 1 将给出星期日而不是 ISO 8601(星期一),所以我假设 NSCalendar 与 ISO 8601 不兼容。不过没问题,我可以使用 weekday = 2。
第二个问题是上面的代码将给出 7-Feb-2016 而不是 15-Feb-2016。这里的问题是 ISO 8601 将第一周定义为第一个星期四的那一周,NSCalendar 也没有使用它。
那么问题来了,有没有办法让一周的第一天 ISO 8601 与 swift 兼容?
我找到的所有示例都没有生成 ISO 兼容日期。 谢谢!
最佳答案
使用 ISO8601 日期组件时,请使用 ISO8601 日历。
以下代码为您提供 2016 年 2 月 15 日:
let calendar = Calendar(identifier: .iso8601)
let dayComponent = DateComponents(year: 2016, weekday: 2, weekOfYear: 7)
let date = calendar.date(from: dayComponent)
关于Swift:ISO 8601 日期从星期到年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51619628/