почему этот код отображает дату SAT, где с NSDateComponent setWeekday я использовал 1 для SUN? - PullRequest
0 голосов
/ 05 апреля 2011

Почему в этом коде отображается дата SAT, где с NSDateComponent & setWeekday я использовал 1 для SUN?

// 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

1 Ответ

1 голос
/ 05 апреля 2011

Преобразование NSDateComponents только с установленным днем ​​недели, часами и минутами, по-видимому, дает вам дату в году 1. Поскольку это задолго до перехода между юлианским и григорианским календарями, в некоторых местах, где некоторыеметоды интерпретируют дату в григорианском календаре, в то время как другие интерпретируют ее в юлианском календаре.

Когда я пробую ваш код с более подробным форматом даты, я получаю Sat 0001-01-01 13:30:00 -045602.Попробуйте после использования setYear: на компонентах, и вы получите ощутимые результаты.

...