我需要创建一个函数,根据 ISO 周系统(ISO8601)在 Swift 中计算给定年份的周数。我需要这个数字作为 Int。首先,我想我需要制定NSDate12 月 31 日的日期,然后询问那是哪一周。然后我意识到,有时 12 月 31 日位于下一年的第一周(例如,2014 年 12 月 31 日)。
有人知道有办法做到这一点吗?
我试过:
var calendarr = NSCalendar(calendarIdentifier: NSCalendar.Identifier.ISO8601)!
var monday = "01-01-2005"
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy"
var datumet = dateFormatter.date(from: monday)
var weekRange = calendarr.range(of: .weekOfYear, in: .year, for: datumet!)
var weeksCount = weekRange.length
print("this many weeks", weeksCount)
Run Code Online (Sandbox Code Playgroud)
然而,无论我输入哪一年,它都会给我 53 周。作为参考,2004 年有 53 周,2005 年有 52 周。