Как вы интерпретируете даты с помощью 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)

person Douglas Mayle    schedule 13.10.2009    source источник


Ответы (1)


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

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