我在获取有效DateComponents值的weekOfYear时遇到了一些问题。
let cal = Calendar.current let dc = DateComponents(calendar:cal, year: 2023, month: 1, day:12) let woy = dc.weekOfYear print("Week of year: \(woy)")
生成
Week of year: nil
作为输出。我以为是2 ...
2
o4hqfura1#
DateComponents是一个简单的类型。它只是一个日期组件的集合。它不做日期计算,比如计算一年中的星期。这是Calendar的工作。当你初始化日期组件时,你没有给予它一年中的星期,所以当你请求它时,你得到了nil。你可以让日历把你的DateComponents变成一个Date,然后问它一年中的星期是几:
DateComponents
Calendar
nil
Date
let cal = Calendar.current let dc = DateComponents(calendar:cal, year: 2023, month: 1, day:12) if let date = cal.date(from: dc) { // prints 2 as expected print(cal.component(.weekOfYear, from: date)) }
1条答案
按热度按时间o4hqfura1#
DateComponents
是一个简单的类型。它只是一个日期组件的集合。它不做日期计算,比如计算一年中的星期。这是Calendar
的工作。当你初始化日期组件时,你没有给予它一年中的星期,所以当你请求它时,你得到了nil
。你可以让日历把你的
DateComponents
变成一个Date
,然后问它一年中的星期是几: