【问题标题】:How to get number of weeks by month in year?如何获得一年中每月的周数?
【发布时间】:2015-11-14 03:31:29
【问题描述】:

我想要一个函数,该函数将返回当前年份当前月份的周数数组。

例如,如果当前月份是 2015 年 8 月,它将返回 [32, 33, 34, 35, 36]。如果月份是 2015 年 2 月,它将返回 [6, 7, 8, 9]。

有什么办法可以得到这个吗?

在苹果文档中NSCalendar 类有一个选项来获取一年中的当前周数,但这不是我需要的。

【问题讨论】:

  • 到目前为止你尝试过什么?理想情况下,您希望展示某种尝试,而不是简单地要求某人为您完成工作。

标签: ios swift nscalendar week-number


【解决方案1】:

正如已经提到的NSCalendar 有一个方法rangeOfUnit:inUnit:forDate:。 正确的日历单位是CalendarUnitWeekOfYearCalendarUnitMonth

区域设置和一周中的第一个工作日设置的结果可能不同。

let calendar = NSCalendar.currentCalendar()
let weekRange = calendar.rangeOfUnit(NSCalendarUnit.CalendarUnitWeekOfYear, inUnit: .CalendarUnitMonth, forDate: NSDate())
let weekArray = Array(weekRange.location..<weekRange.location + weekRange.length)

斯威夫特 3:

let calendar = Calendar.current
let weekRange = calendar.range(of: .weekOfYear, in: .month, for: Date())

【讨论】:

  • 如何在 swift 3 中使用它?我需要计算一个月的周数。
【解决方案2】:

NSCalendar 没有直接提供任何 api 来获取一个月的周数。您也必须使用 NSDateComponents 和 NSDate。

我可以给你一些提示,但正如史蒂夫建议的那样,你需要先自己尝试。

尝试获取范围,查看 NSCalendar 的方法 - rangeOfUnit:inUnit: 想一想,如何使用这种方法来获得所需的输出。

【讨论】:

  • rangeOfUnit:inUnit:forDate 不是一种解决方法,这是进行这种日期数学的推荐方法
  • 对不起,英语不好。让我重新表述一下我的回答。谢谢!
猜你喜欢
  • 2020-01-22
  • 2022-06-21
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 2020-12-08
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
相关资源
最近更新 更多