NSDate от NSString - PullRequest
       15

NSDate от NSString

0 голосов
/ 12 июля 2010

У меня есть строка в формате «Пт Июл 09 17:57:44 +0000 2010», которую мне нужно преобразовать в NSDate.

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

С уважением

1 Ответ

0 голосов
/ 12 июля 2010

Вы пробовали метод грубой силы:

Это не проверено, но должно дать вам некоторое представление о том, что делать.

// Set up some helper information
NSArray *monthArray = [NSArray arrayWithObjects:@"Jan", @"Feb", @"Mar",
                                                @"Apr", @"May", @"Jun",
                                                @"Jul", @"Aug", @"Sep",
                                                @"Oct", @"Nov", @"Dec", nil];
NSArray *ordinalArray = [NSArray arrayWithObjects:@"01", @"02", @"03",
                                                  @"04", @"05", @"06",
                                                  @"07", @"08", @"09",
                                                  @"10", @"11", @"12", nil];

NSDictionary *monthOrdinalDictionary = [NSDictionary dictionaryWithObjects:ordinalArray 
                                                         forKeys:monthArray];

// This is the date string to convert.
dateString = @"Fri Jul 09 17:57:44 +0000 2010"; 

// Split it into it's components
NSArray *dateComponentArray = [dateString componentsSeparatedByString:@" "];

// Create a new date string from the components in a format that NSDate understands
newDateString = [NSString stringWithFormat:@"%@-%@-%@ %@ %@", [dateComponentArray objectAtIndex:6],
                                   [monthOrdinalDictionary objectForKey:[dateComponentArray objectAtIndex:2]],
                                   [dateComponentArray objectAtIndex:3],
                                   [dateComponentArray objectAtIndex:4],
                                   [dateComponentArray objectAtIndex:5]];

// Create the date from this string
NSDate *dateTime = [NSDate dateWithString:newDateString];

Да, это уродливо, но вы можете реорганизовать большинствоиз этого в вспомогательную функцию.Я не проверял это, но у вас должно быть представление о том, что делать: взять строку даты, преобразовать ее в строку, которую NSDate может использовать для создания даты, использовать эту строку для создания NSDate.

По крайней мере, у вас будет код для работы, и вы можете вернуться и изменить его, если это узкое место в производительности.

...