2013-05-06 2 views
-2

다음 코드를 사용하여 월 (5)을 전체 이름 (5 월)으로 변환하려고합니다. 그러나 설정을 MM에서 MMMM으로 변경하면 null이 반환됩니다. 왜 이런거야?날짜 월을 정식으로 변환하려고 시도하면 (null)

NSDate *date = [birthday getDate]; 
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:date]; 
NSInteger year = [components year]; 

if (year == 1604) { 
    NSString *monthNumberString = [NSString stringWithFormat:@"%d", [components month]]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"MMMM"]; 
    NSDate *date = [formatter dateFromString:monthNumberString]; 
    NSString *stringFromDate = [formatter stringFromDate:date]; 
    NSString *monthDay = [NSString stringWithFormat:@"%@, %d", stringFromDate, [components day]]; 
    cell.birthdayLabel.text = monthDay; 
} else { 
... 
} 
+0

'MM'과 호환됩니까? – Undo

+0

예, MM은 "05"를 5 월에 반환합니다 ... – samiles

+0

DateFormatter는 5 월을 예상하고 5를 전달하므로 작동하지 않습니다. 형식이 MM이면 형식 기는 5를 기대합니다. – Anupdas

답변

1

당신은 이미 날짜가

NSDate *date = [birthday getDate]; 
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit 
                   fromDate:date]; 
NSInteger year = [components year]; 

if (year == 1604) 
{ 
    NSString *monthNumberString = [NSString stringWithFormat:@"%d", [components month]]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"MM"]; 
    NSDate *date = [formatter dateFromString:monthNumberString]; 
    [formatter setDateFormat:@"MMMM"]; 
    NSString *stringFromDate = [formatter stringFromDate:date]; 
    NSString *monthDay = [NSString stringWithFormat:@"%@, %d", stringFromDate, [components day]]; 

    NSLog(@"%@",monthDay); 

    cell.birthdayLabel.text = monthDay; 
} 
else { 

} 
+0

위대한 작품, 고마워요! – samiles

+0

너무 많은 여분의 코드와 전환이 여기에서 발생합니다. 간단한 접근 방식에 대한 내 대답을 참조하십시오. – rmaddy

+0

@rmaddy 당신은 의식입니다, 나는 그것이 작동 할 수 있도록 한 줄의 코드를 추가했습니다. – Anupdas

1

보십시오. 그냥 포맷 :

NSDate *date = [birthday getDate]; 
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:date]; 
NSInteger year = [components year]; 

if (year == 1604) { 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"MMMM, d"]; 
    NSString *stringFromDate = [formatter stringFromDate:date]; 
    cell.birthdayLabel.text = stringFromDate; 
} else { 
... 
} 
+0

질문에 개인이 더 이상 생일에 대해 걱정하는지 궁금해합니다. –

관련 문제