程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> ios-計算出一個月內有幾個星期

ios-計算出一個月內有幾個星期

編輯:編程綜合問答
計算出一個月內有幾個星期

我想要計算出一個月內的星期。我找到在IOS5實現的方法了,但是在IOS6中不知道應該怎麼辦?

- (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];
}

結果在ios5中返回了5,在ios6中返回了6,這應該怎麼解決?

最佳回答:


我更新XCode後沒有IOS5了,但是我不知道你有沒有看這段代碼。這段代碼的意思也就是說循環遍歷當前月的每一日,取每一日所在在年周數放入set中。
比如3月份,3月1號是2013年第9周,而三月31號是2013年第14周,也就說的確是6周。
我覺得Ios5中返回5的原因可能是個系統bug被修復了。
------------------------------------
當然還有種方法:
[cCalendar setMinimumDaysInFirstWeek:4];//通過這個參數設置首周的長度
int week = [[cCalendar components: NSWeekOfMonthCalendarUnit fromDate:date] weekOfMonth];//通過這個算當前日在周號

比如說首周長度為4的時候,周號為{0,1,2,3,4,5}
比如說首周長度為1的時候,周號為{1,2,3,4,5,6}
然後自己做判斷,過慮周號為0的周,這樣就返回5了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved