这有点奇怪,但是是否可以使用NSCALENDAR(或任何组件)来弄清楚下一个“月的第一个星期二”的日期是什么?

例如,今天是2010年3月25日,星期四。下一个月的第一个星期二”将于4月6日。同样,如果我正在寻找4月1日的下一个“本月第一个星期二” 4月6日。

您将如何做?

非常感谢!!!!!

有帮助吗?

解决方案

下面的代码计算给定月/年组合的第一个星期二。它写在 麦克劳比 因为那是我刚刚尝试的,但是您应该没有问题将其转换为适当的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的月/天组合。

其他提示

不幸的是,我无法验证此代码的无能,但有些应该看起来像这样:

NSDateComponents *components = [[NSDateComponents alloc] init];
[components setWeekday:2]; // Monday
[components setMonth:5]; // May
[components setYear:2008];
[components setWeekdayOrdinal:1]
NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:components];

有关样本和详细信息,请参阅此信息 指导

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top