【发布时间】:2013-03-06 09:28:32
【问题描述】:
这是问题所在,我正在寻找一种方法来获取一个月中的周数。我已经找到了一个似乎适用于 ios 5 的解决方案,但它不适用于 io6(返回的数字不一样,在 ios 6 上还有一个)。
- (int)weeksOfMonth:(int)month inYear:(int)year
{
NSCalendar *cCalendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setMonth:month];
[components setYear:year];
NSRange range = [cCalendar rangeOfUnit:NSDayCalendarUnit
inUnit:NSMonthCalendarUnit
forDate:[cCalendar dateFromComponents:components]];
cCalendar = [NSCalendar currentCalendar];
[cCalendar setMinimumDaysInFirstWeek:4];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setLocale: [[NSLocale alloc] initWithLocaleIdentifier:@"fr"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSMutableSet *weeks = [[NSMutableSet alloc] init ];
for(int i = 0; i < range.length; i++)
{
NSString *temp = [NSString stringWithFormat:@"%4d-%2d- %2d",year,month,range.location+i];
NSDate *date = [dateFormatter dateFromString:temp ];
int week = [[cCalendar components: NSWeekOfYearCalendarUnit fromDate:date] weekOfYear];
[weeks addObject:[NSNumber numberWithInt:week]];
}
return [weeks count];
}
io6 上返回值为 6,io5 上返回值为 5。
你有什么想法吗?
编辑:另一件事,我的设备(ios5)是法语,模拟器(ios6)是英语。也许它可以改变一些东西(比如一周的第一天?)?
【问题讨论】:
-
即使在 osx 中也显示 6。这是正确的计数。
-
您尝试显示问题的月份和年份是什么?
-
检查我的更新代码,我在 osx 和 ios6 中检查它,它工作正常。
-
这是在 2013 年 3 月测试的,结果应该是 5,除非星期从星期日开始。也许问题就在这里。 (模拟器(io6)是英文的,我的设备(ios5)是法文的)。
-
Number of weeks in month 的可能重复项
标签: iphone ios objective-c ios5 ios6