2

現在の週を取得する必要があるアプリを開発しています。私はこれを試しました:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *dateString = @"1-1-2011";
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd-MM-yyyy"];
    NSDate *dateFromString = [[NSDate alloc] init];
    dateFromString = [dateFormatter dateFromString:dateString];
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *comp = [gregorian components:NSWeekCalendarUnit fromDate:dateFromString];
    NSLog(@"%d", comp.week);

    [dateFormatter release];
}

しかし、それは私に52を示しています。これは実際には間違った結果です。アイデアがあれば教えてください。前もって感謝します。

4

1 に答える 1

5

週の日付は、使用されている番号付け標準によって異なります。たとえば、ISO-8601 標準では、年の第 1 週を「その年の最初の木曜日を含む週」と定義しています。

2011 年 1 月 1 日は土曜日でした。これは、次の週が 2011 年の第 1 週であることを意味し、2010 年 27.12.2010 ~ 2.1.2011 の週は 2010 年の第 52 週になります。

また、週の開始時期と終了時期、および 1 年の週の番号付け方法については、互換性のない標準がいくつかあります。これにより、週番号は日付範囲を指定するための紛らわしい方法になり、それらの使用を避けるための最善の解決策になります。

setMinimumDaysInFirstWeek:ドキュメントから NSCalendar まで、週数の調整にも使用できるようです 。

于 2011-10-25T13:41:05.267 に答える