我正在试图弄清楚如何使用NSDateFormatter解析AD和BC日期以及为什么0000年无法解析。
NSString *test1 = @"0000-01-01";
NSString *test2 = @"0001-01-01";
NSString *test3 = @"0002-01-01 AD";
NSString *test4 = @"0002-01-01 BC";
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
[formatter1 setDateFormat: @"yyyy-MM-dd"];
NSLog(@"test 1 - %@", [formatter1 dateFromString: test1]);
NSLog(@"test 2 - %@", [formatter1 dateFromString: test2]);
NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
[formatter2 setDateFormat: @"yyyy-MM-dd G"];
NSLog(@"test 3 - %@", [formatter2 dateFromString: test3]);
NSLog(@"test 4 - %@", [formatter2 dateFromString: test4]);
这就是它的回报:
2012-11-26 11:24:27.536 Test[1968:c07] test 1 - (null)
2012-11-26 11:24:28.615 Test[1968:c07] test 2 - 0001-12-31 22:21:00 +0000
2012-11-26 11:24:37.604 Test[1968:c07] test 3 - 0001-12-31 22:21:00 +0000
2012-11-26 11:24:45.738 Test[1968:c07] test 4 - 0003-12-31 22:21:00 +0000
正如您所看到的,它为0000日期返回null,而其他变体则返回错误的日期。
答案 0 :(得分:0)
根据wikipedia,Anno Domini(AD)系统中不存在零年,通常用于公历和其前身Julian日历中的年数。在这个系统中,公元前1年之后是公元1年。但是,天文年编号(与公元前1年的朱利安年份一致)和ISO 8601:2004(与格里高利年一致)的年份为零公元前1)以及所有佛教和印度教日历。
您无法正确记录日期对象。尝试使用stringFromDate函数将获得的日期转换为字符串并记录输出。