2013-06-07 2 views
1

У меня есть NSDate, и я хочу узнать Имя дня недели для FIRST месяца из этого NSDate. Так, например, мне дают «15 мая 2013 года», и я хочу вернуться «в среду», так как «1 мая 2013 года» было в среду. Вот мой тестовый код;Неделя дня недели для первого числа из NSDate

// Setup a Date and Formatter and load with a date 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd"]; 

    NSDate *date = [dateFormatter dateFromString:@"2013-05-10"]; 
    NSLog(@"Day In Month : %@", [dateFormatter stringFromDate:date]); 

    // Setup a calendar and extract components and force to the first 
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    //NSCalendar *calendar = [NSCalendar currentCalendar]; 
    NSDateComponents *dateComponants = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]]; 

    [dateComponants setDay:1]; 

    date = [calendar dateFromComponents:dateComponants]; 
    NSLog(@"First Day : %@", [dateFormatter stringFromDate:date]); 

    // Change the formatter for the Day name 
    [dateFormatter setDateFormat:@"EEEE"]; 
    NSLog(@"Day Name : %@", [dateFormatter stringFromDate:date]); 

А вот что говорит мой журнал ....

Day In Month : 2013-05-10 
First Day : 2013-06-01 
Day Name : Saturday 

Что дата июня делает в середине? На самом деле 1 июня - суббота, но это мне действительно не помогает.

Спасибо за любую помощь.

ответ

2

Заменить

NSDateComponents *dateComponants = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]]; 

с

NSDateComponents *dateComponants = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate: date]; 
+0

Да просто понял это сам, спасибо за быстрый ответ. –

0

Я идиот в высшей степени !!!!

Должно быть

NSDateComponents *dateComponants = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:date]; 

смотрел на него в течение часа ...

+0

Ха-ха, разве они оба одинаковы? – Adithya

+0

Yep сделал это снова (изменено сейчас), может дать это на день. –

Смежные вопросы