NSDateFormatter 不同日期的相同字符串
NSDateFormatter same string for different dates
有人可以解释为什么 NSDateFormatter return 来自不同日期的相同字符串:
NSDateFormatter *f = [NSDateFormatter new];
f.dateFormat = @"MM/dd/yyyy";
NSDate *dateYear0 = [[NSCalendar currentCalendar] dateWithEra:0 year:0 month:3 day:31 hour:0 minute:0 second:0 nanosecond:0];
NSDate *dateYear1 = [[NSCalendar currentCalendar] dateWithEra:0 year:1 month:3 day:31 hour:0 minute:0 second:0 nanosecond:0];
NSString *dateStrYear0 = [f stringFromDate:dateYear0];
NSString *dateStrYear1 = [f stringFromDate:dateYear1];
NSLog(@"dateYear0=%@ \t\t dateStrYear0=%@",dateYear0,dateStrYear0);
NSLog(@"dateYear1=%@ \t\t dateStrYear1=%@",dateYear1,dateStrYear1);
dateStr1 和 dateStr2 具有相同的值:
NSLog 结果:
dateYear0=0001-03-30 21:57:56 +0000 dateStrYear0=03/31/0001
dateYear1=0000-03-30 21:57:56 +0000 dateStrYear1=03/31/0001
它看起来像 0 年以某种方式影响这个?
谢谢
那是因为 Gregorian Calendar 中不存在第 0 年。在处理 AD 日期时,NSDate
的最小可能值为“0001-01-01 00:00:00 +0000”,因此只要使用的值小于 1,它就会使用“0001”作为年份。您可以检查最小值 NSDate
值与 distantPast
class 方法。
此外,如果您想使用 BC 日期,您应该查看 Apple 的 guideline 以获取更多信息。
有人可以解释为什么 NSDateFormatter return 来自不同日期的相同字符串:
NSDateFormatter *f = [NSDateFormatter new];
f.dateFormat = @"MM/dd/yyyy";
NSDate *dateYear0 = [[NSCalendar currentCalendar] dateWithEra:0 year:0 month:3 day:31 hour:0 minute:0 second:0 nanosecond:0];
NSDate *dateYear1 = [[NSCalendar currentCalendar] dateWithEra:0 year:1 month:3 day:31 hour:0 minute:0 second:0 nanosecond:0];
NSString *dateStrYear0 = [f stringFromDate:dateYear0];
NSString *dateStrYear1 = [f stringFromDate:dateYear1];
NSLog(@"dateYear0=%@ \t\t dateStrYear0=%@",dateYear0,dateStrYear0);
NSLog(@"dateYear1=%@ \t\t dateStrYear1=%@",dateYear1,dateStrYear1);
dateStr1 和 dateStr2 具有相同的值:
NSLog 结果:
dateYear0=0001-03-30 21:57:56 +0000 dateStrYear0=03/31/0001
dateYear1=0000-03-30 21:57:56 +0000 dateStrYear1=03/31/0001
它看起来像 0 年以某种方式影响这个?
谢谢
那是因为 Gregorian Calendar 中不存在第 0 年。在处理 AD 日期时,NSDate
的最小可能值为“0001-01-01 00:00:00 +0000”,因此只要使用的值小于 1,它就会使用“0001”作为年份。您可以检查最小值 NSDate
值与 distantPast
class 方法。
此外,如果您想使用 BC 日期,您应该查看 Apple 的 guideline 以获取更多信息。