0

NSDateComponentとsetWeekdayでSUNに1を使用したのに、なぜこのコードはSATである日付を表示するのですか?

// Set Day
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setWeekday:1];
[comps setHour:13];
[comps setMinute:30];

NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDate *tempDate = [gregorian dateFromComponents:comps];

NSDateFormatter *format = [[[NSDateFormatter alloc] init] autorelease];
[format setDateFormat:@"EEE HH:mm"];    
NSString *s = [format stringFromDate:tempDate];
NSLog(@"Finishing : %@", s);

// Gave => 2011-04-05 09:50:28.467 test1[39840:207] Finishing : Sat 13:30
4

1 に答える 1

1

曜日、時、分のみが設定されたNSDateComponentsを変換すると、明らかに1年目の日付が得られます。これはユリウス暦/グレゴリオ暦の移行よりずっと前であるため、一部のメソッドが他の人がユリウス暦でそれを解釈している間、先発グレゴリオ暦の日付。

より詳細な日付形式でコードを試してみると、が表示されますSat 0001-01-01 13:30:00 -045602。コンポーネントで使用した後に試してみると、setYear:賢明な結果が得られます。

于 2011-04-05T00:35:34.307 に答える