1

週ごとのグラフでデータを取得するためにこれが必要です。これは私にはうまくいきません。返される日付は、選択した年の 1 月 1 日です。何かアイデアはありますか?

-(NSDate*) getFirstDateOfTheWeek:(NSString*) weekNr andYear: (NSString*) theYear {
        int intYear = [theYear intValue];
        int intWeek = [weekNr intValue];

        NSCalendar *gregorian = [[NSCalendar alloc]
                                 initWithCalendarIdentifier:NSGregorianCalendar];
        [gregorian setLocale:[NSLocale currentLocale]];

        NSDateComponents * comp = [[NSDateComponents alloc] init];
        [comp setYear:intYear];
        [comp setWeek:intWeek];

        NSDate *dateOfFirstDay = [gregorian dateFromComponents:comp];
        NSDateComponents *dateComponents =
        [gregorian components:NSWeekdayCalendarUnit|NSWeekCalendarUnit|NSDayCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit fromDate:dateOfFirstDay];
        int year = [dateComponents year];
        int month = [dateComponents month];
        int day = [dateComponents day];

        dateOfFirstDay= [gregorian dateFromComponents:dateComponents];
        return dateOfFirstDay;
    }
4

1 に答える 1

0

setYear と setWeek に加えて、NSDateComponents で Weekday を設定する必要があります。

[comp setWeekday:intWeek];

次に、新しいコンポーネントを取得するときに、フラグの多くは必要ありません。実際に必要なのは 1 日 (およびデバッグ用のその他のフラグ) だけだからです。

    [gregorian components:NSDayCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit fromDate:dateOfFirstDay];
于 2012-05-22T11:39:39.297 に答える