我正在尝试使用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)
第一个问题是工作日= 1将提供星期日,而不是ISO 8601(星期一),因此我认为NSCalendar与ISO 8601不兼容。没问题,我可以使用平日= 2。
第二个问题是,上面的代码将给出2016年2月7日,而不是2016年2月15日。这里的问题是,ISO 8601将第一周定义为第一周四的一周,NSCalendar也未使用。
所以问题是,有没有办法使一周中的第一天ISO 8601迅速兼容?
我发现的所有示例均未得出与ISO兼容的日期。 谢谢!
答案 0 :(得分:1)
使用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)