すぐに始めましょう。コード スニペットは次のとおりです。
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 Simulator (または iOS 6 デバイス) 用にビルドしたときの結果:
4001-01-01T00:00:00.000Z -- 2001-01-01 00:00:00 +0000
出力された年の不一致に注意してください (「--」の後)。
iOS 6 では、日付フォーマッタが 3512 年 (現在から 1500 年後) を超える日付から 2000 年を減算することが判明しました。
他の誰かがこれを経験したり、エレガントな回避策を持っていますか?
ありがとう。