我们会直截了当。这是代码片段:
NSString *dateString = @"4001-01-01T00:00:00.000Z";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormatter setTimeZone:timeZone];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];
NSDate *date = [dateFormatter dateFromString:dateString];
NSLog(@"%@ -- %@", dateString, date);
为 iPhone 5.1 Simulator(或 iOS 5.1 设备)构建时的结果:
4001-01-01T00:00:00.000Z -- 4001-01-01 00:00:00 +0000
为 iPhone 6.0 模拟器(或 iOS 6 设备)构建时的结果:
4001-01-01T00:00:00.000Z -- 2001-01-01 00:00:00 +0000
注意输出年份的差异(在“--”之后)。
我们已经确定,在 iOS 6 中,日期格式化程序会从 3512 年之后的任何日期(从现在起 1500 年)中减去 2000 年。
有没有其他人经历过这个和/或有一个优雅的解决方法?
谢谢。