小编Kla*_*und的帖子

获取给定 ISO 8601 日历年的周数

我需要创建一个函数,根据 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 周。

calendar date iso8601 nsdate swift

5
推荐指数
1
解决办法
2207
查看次数

标签 统计

calendar ×1

date ×1

iso8601 ×1

nsdate ×1

swift ×1