我正在处理历史记录申请,因此我需要处理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>
你知道如何正确地做到这一点吗?
答案 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有不同的格式:
所以我只需要在解析时更改我的XML文件以获得正确的格式。
为了以AD-BC格式显示我的日期,我稍后将其转换为:
+ (NSString*) convertIntoBCADString:(NSString*) originalString
{
NSString* newString = [originalString stringByReplacingOccurrencesOfString:@"av. J.-C." withString:@"BC"];
return [newString stringByReplacingOccurrencesOfString:@"ap. J.-C." withString:@"AD"];
}