Как вы интерпретируете даты с NSDateFormatter?

В Apple Docs говорится, что NSDateFormatter использует Unicode для спецификации. Я прочитал спецификацию, но у меня проблемы с интерпретацией этой даты:

NSDateFormatter *frm = [[NSDateFormatter alloc] init];
[frm setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"];
NSLog(@"Tue Oct 13 09:24:15 +0000 2009 becomes %@", [frm dateFromString:@"Tue Oct 13 09:24:15 +0000 2009"]);

Этот код распечатывает:

2009-10-13 11:37:40.334 test2[1704:20b] Tue Oct 13 09:24:15 +0000 2009 becomes (null)
13.10.2009 09:44:14
1 ОТВЕТ
РЕШЕНИЕ

Извините, ребята, разобрались уже. NSDateFormatter по умолчанию использует текущую системную локаль. В приведенном выше примере кода происходит сбой только в том случае, если вы устанавливаете системный языковой стандарт на значение, отличное от US. Чтобы исправить это, непосредственно перед тем, как установить языковой стандарт на тот, который используется в строке даты, например:

[frm setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];
2
13.10.2009 10:07:04
У меня только что были проблемы с тем же. Это было связано с текущей настройкой даты и времени (12/24 часа). Я пытался разобрать дату, 2004-11-29 16:01:26используя yyyy-MM-dd HH:mm:ss. Будет работать, только если я заставил локаль: [dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"] autorelease]];сбивает с толку, но это работает!
Michael Waterfall 30.12.2009 02:35:51