iPad上的否定日期问题,而不是模拟器上的问题

时间:2010-07-30 20:45:55

标签: cocoa ipad date nsdateformatter

我正在处理历史记录申请,因此我需要处理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)< / p>

你知道如何正确地做到这一点吗?

2 个答案:

答案 0 :(得分:2)

我刚试过这个:

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 :(得分:1)

我终于找到了诀窍。 问题是我的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"]; 
}