Проблема с отрицательной датой на iPad, а не на симуляторе - PullRequest
3 голосов
/ 31 июля 2010

Я работаю над приложением истории, поэтому мне нужно справиться с датой до и после JC.

Я пытаюсь проанализировать строку с формой "01/01 / -200", но этовозвращает нулевую дату, пока она работает с "01/01/200".

Вот мой код:

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc]init] autorelease];
[dateFormatter setDateFormat:@"dd/MM/y"]; // @TODO Get negative date
[dateFormatter setLenient:NO];

NSDate* date = [dateFormatter dateFromString:dateString];
return date;

Я также пытаюсь использовать с формой "01/01/200 BC"setDateFormat:@"dd/MM/y G" но я не могу заставить это работать.Как подсказывает mvds в своем ответе, я попробовал формат "01/01/200 BC" на симуляторе, и он работает ... проблема возникает только на моем iPad (версия 3.2.1)

У вас есть идея, как это сделать правильно?

Ответы [ 2 ]

2 голосов
/ 31 июля 2010

Я только что попробовал это:

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc]init] autorelease];
[dateFormatter setDateFormat:@"dd/MM/y G"];
NSDate *date = [dateFormatter dateFromString:@"01/01/200 BC"];
NSLog(@"refdate %@",[dateFormatter stringFromDate:date]);
date = [date addTimeInterval:24*3600*365*2];
NSLog(@"2 years later %@",[dateFormatter stringFromDate:date]);

, который выводит:

refdate 01/01/200 BC
2 years later 01/01/198 BC

Это на 3.2, симулятор iPad, поэтому не самый последний SDK, но, тем не менее, iPad.Получаете ли вы разные результаты, запустив это?

1 голос
/ 16 августа 2010

Я наконец нашел трюк.Проблема в том, что мой iPad на французском языке, поэтому у Era был другой формат:

  • BC - "av. J.-C."
  • AD - это «ap. J.-C.»

Поэтому мне просто пришлось изменить свой XML-файл, чтобы получить правильный формат при разборе.

ВЧтобы отобразить мою дату в формате AD-BC, я просто конвертирую ее позже:

+ (NSString*) convertIntoBCADString:(NSString*) originalString 
{
    NSString* newString = [originalString stringByReplacingOccurrencesOfString:@"av. J.-C." withString:@"BC"];
    return [newString stringByReplacingOccurrencesOfString:@"ap. J.-C." withString:@"AD"]; 
}
...