Swift:如何获取DateComponents实例的weekOfYear值?
解决DateComponents无法获取weekOfYear的问题
直接创建的DateComponents仅存储你显式传入的组件值,不会自动计算像weekOfYear这类衍生组件,所以直接访问会返回nil。要得到正确的年度周数,需要借助Calendar的计算能力,有两种常用方法:
方法一:先转成Date再提取周数
let cal = Calendar.current // 先将DateComponents转为对应的Date实例 if let date = DateComponents(calendar: cal, year: 2023, month: 1, day: 12).date { // 从Date中提取weekOfYear组件 let woy = cal.dateComponents([.weekOfYear], from: date).weekOfYear print("Week of year: \(woy ?? 0)") // 输出预期的2 }
方法二:直接通过Calendar计算指定组件的周数
let cal = Calendar.current let dc = DateComponents(year: 2023, month: 1, day: 12) // 让Calendar基于传入的日期组件计算weekOfYear if let woy = cal.dateComponents([.weekOfYear], from: dc).weekOfYear { print("Week of year: \(woy)") // 输出预期的2 }
两种方法的核心都是利用Calendar的规则来计算衍生组件,而不是依赖DateComponents自身的存储值。
内容的提问来源于stack exchange,提问作者PDPS
相关产品推荐
相关产品推荐

