MacとiOSの両方でこのコードを実行してみてください
NSDateFormatter *localFormatter = [[NSDateFormatter alloc] init];
localFormatter.timeStyle = NSDateFormatterNoStyle;
localFormatter.dateStyle = NSDateFormatterMediumStyle;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"g"]; // g = julian day number
NSDate *d2299159 = [dateFormatter dateFromString:@"2299159"];
NSDate *d2299160 = [dateFormatter dateFromString:@"2299160"];
NSDate *d2299161 = [dateFormatter dateFromString:@"2299161"];
NSDate *d2299162 = [dateFormatter dateFromString:@"2299162"];
NSLog(@"Julian Day Number 2299159 = %@", [localFormatter stringFromDate:d2299159]);
NSLog(@"Julian Day Number 2299160 = %@", [localFormatter stringFromDate:d2299160]);
NSLog(@"Julian Day Number 2299161 = %@", [localFormatter stringFromDate:d2299161]);
NSLog(@"Julian Day Number 2299162 = %@", [localFormatter stringFromDate:d2299162]);
そして、これらの出力を取得します(<-注を除く):
マック
Julian Day Number 2299159 = 1582-10-03 <-- Julian calendar
Julian Day Number 2299160 = 1582-10-04 <-- Julian calendar
Julian Day Number 2299161 = 1582-10-15 <-- Gregorian calendar
Julian Day Number 2299162 = 1582-10-16 <-- Gregorian calendar
iOS
Julian Day Number 2299159 = 1582-10-13 <-- Proleptic Gregorian calendar
Julian Day Number 2299160 = 1582-10-14 <-- Proleptic Gregorian calendar
Julian Day Number 2299161 = 1582-10-15 <-- Gregorian calendar
Julian Day Number 2299162 = 1582-10-16 <-- Gregorian calendar
Macでは、NSDateFormatterは、グレゴリオ暦の最初の日である1582年10月15日より前の日付のユリウス暦(旧暦の日付とも呼ばれます)に切り替わります(Appleが使用します。一部の国では異なる日付で採用されています)。この日付より前のグレゴリオ暦を参照する場合、これらの日付は先発グレゴリオ暦にあります。つまり、グレゴリオ暦が存在する前の日付です。また、2番目の出力からわかるように、iOSプラットフォームのNSDateFormatterは、ユリウス暦に切り替わりませんが、先発グレゴリオ暦のままです。出力の違いは、ジュリアンからグレゴリオ暦への移行でスキップされた10日間のスキップ日です。
このアプレットについてもっと知りたい場合は、このアプレットを強くお勧めします
。http ://www.cs.tau.ac.il/~nachum/calendar-book/Calendrica.html
これらの人も書いています主題に関する素晴らしい本。
また、Appleのドキュメントには、履歴日付に関する小さなセクションがあります:https ://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtHist.html#//apple_ref/doc/ uid / TP40010240-SW1
ただし、プラットフォームごとのNSDateFormatterの実装の違いについては触れられていません。
カレンダーの操作は地獄からです-頑張ってください:-)