2010-07-12 3 views
0

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

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

С уважением

+0

Возможный дубликат [iPhone SDK NSString для NSDate] (http://stackoverflow.com/questions/2618807/iphone-sdk-nsstring-to-nsdate) и [Разбор даты RFC 822 с помощью NSDateFormatter] (http://stackoverflow.com/questions/1850824/parsing-a-rfc-822-date-with-nsdateformatter) –

+0

Ни один из которых не позволяет решить мою проблему. –

+0

Mick Walker: Пожалуйста, отредактируйте свой вопрос, чтобы показать нам, что вы пробовали, и как это не удалось. –

ответ

0

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

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

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

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

+0

Зачем это необходимо? –

+0

Просто пример работы через блок. использование 'dateWithNaturalLanguageString: locale' может работать (я не пробовал). Я хотел показать, как работает только блок, пытаясь разработать приложение, чтобы заставить его работать, прежде чем возвращаться и оптимизировать код. – Abizern