NSDateFormatter возвращает ноль на 2 разных входа, которые в том же формате? - PullRequest
0 голосов
/ 25 мая 2010

Я новичок в объективе-c, и у меня возникла эта сумасшедшая проблема ...

для теста с низкой точностью:

dateString = @ "2010-05-25 11:05:21", успешное преобразование.

dateString = @ "2010-03-01 15:54:36", сбой преобразования.

для высокоточного теста:

dateString = @ "2010-05-25 11: 05: 21.937113", успешное преобразование.

dateString = @ "2010-03-01 15: 54: 36.937113", сбой преобразования.

ниже мой код:

// Date formatter
 NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
 NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
 [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
 [dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss.SSSSSS"];
 [dateFormatter setLocale:locale];

NSDateFormatter *lowPrecisionDateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[lowPrecisionDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
[lowPrecisionDateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
[lowPrecisionDateFormatter setLocale:locale];

// try high precision first, if fail, then go ahead to low precision. 
NSDate *date = [dateFormatter dateFromString:dateString];
if(!date){
  date = [lowPrecisionDateFormatter dateFromString:dateString];
}

Любая помощь высоко ценится!

1 Ответ

4 голосов
/ 25 мая 2010

Это всего лишь предположение, но я думаю, что это связано с использованием 24-часового формата дня, а не AM и PM. Я считаю, что если вы используете HH вместо HH в вашей строке setDateFormat, это должно работать.

Edit:

На самом деле, я довольно уверен, что это все после просмотра этой записи в блоге .

...