这有点奇怪,但是否可以使用 NSCalendar(或任何组件,就此而言)来计算下一个“每月第一个星期二”的日期?
例如,今天是 2010 年 3 月 25 日,星期四。下一个“本月的第一个星期二”将是 4 月 6 日。同样,如果我在 4 月 1 日寻找下一个“本月的第一个星期二”,它仍然是 4 月 6 日。
你会怎么做?
非常感谢!!!!!!
最佳答案
下面的代码计算给定月份/年份组合的第一个星期二。它写在MacRuby因为那是我刚刚尝试过的,但是将它转换为正确的 Objective-C 应该没有问题,它只是一种不同的语法(我喜欢 MacRuby,因为它可以快速尝试一个想法):
dc = NSDateComponents.alloc.init
# Set month to April 2010
dc.setYear 2010
dc.setMonth 4
dc.setWeekday 3 # 1 = Sunday, 2 = Monday, ...
dc.setWeekdayOrdinal 1 # We want the first weekday of the month
cal = NSCalendar.alloc.initWithCalendarIdentifier NSGregorianCalendar
date = cal.dateFromComponents dc
date.description # => "2010-04-06 00:00:00 +0200"
我留给您确定从给定日期开始的“下一个第一个星期二”:首先对当前日期的月份进行计算,如果结果是过去的,则对下个月再次进行计算。使用 -[NSCalendar components:fromDate:]
获取给定 NSDate 的月/日组合。
关于iphone - 使用 NSCalendar——获取下个月的第一个星期二,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2516315/