Swift:ISO 8601 日期来自周和年
Swift: ISO 8601 date from week and year
我正在尝试使用 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 兼容?
我发现的 None 个示例生成了 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.
获取给定日历周和年份的一周第一天的日期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 兼容?
我发现的None 个示例生成了 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)