Разобрать дату с целью-c - PullRequest
1 голос
/ 24 мая 2011

У меня есть переменные NSString, такие как dd-MM-YYYY, пример 30-05-2011.Как я могу получить день в переменной, месяц в переменной и год в переменной?спасибо

Ответы [ 3 ]

3 голосов
/ 24 мая 2011

Используйте NSDateFormatter и NSDateComponents.

В частности, для формата "dd-MM-YYYY":

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"dd'-'MM'-'yyyy"];
// Your date represented as a NSDate
NSDate *date = [formatter dateFromString:myDateString];
// Now, use NSCalendar / NSDateComponents to get the components
NSDateComponents *comps = [[NSCalendar currentCalendar] components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit
                                                          fromDate:date];

Теперь у вас есть свободный доступ к [comps day], [comps month] и [comps year].

См. здесь для описания всех параметров синтаксического анализа формата.Имейте в виду, что NSDateFormatter также поддерживает более старые версии этого стандарта, поэтому вам следует быть осторожным.

2 голосов
/ 24 мая 2011

Вы могли бы сделать что-то вроде ...

    NSString *dateAsString = @"30-05-2011";
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"d-MM-yyyy"];
    NSDate *datePlain = [formatter dateFromString:dateAsString]; 
    [formatter release];

, а затем используйте объект NSDate datePlain

1 голос
/ 24 мая 2011

Взгляните на dateFromString: метод NSDateFormatter.

NSDateFormatter *df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd"];
NSDate *d = [df dateFromString:@"2011-05-10"];
[df release];

Вы можете делать все, что вам нужно, с объектом NSDate.

...