これを iOS6 で実行してみてください (iOS6 より前のテストは行っていません):
NSDateFormatter *julianDayDateFormatter = nil;
julianDayDateFormatter = [[NSDateFormatter alloc] init];
[julianDayDateFormatter setDateFormat:@"g"];
for (NSString *timeZone in [NSTimeZone knownTimeZoneNames]) {
julianDayDateFormatter.timeZone = [NSTimeZone timeZoneWithName: timeZone];
NSDate *date = [julianDayDateFormatter dateFromString:[NSString stringWithFormat:@"%d", 2475213]];
if (date == nil)
NSLog(@"timeZone = %@", timeZone);
}
次の出力が得られます。
America/Bahia
America/Campo_Grande
America/Cuiaba
America/Sao_Paulo
NSDateFormatter をユリウス日番号に設定して、これら 4 つのタイム ゾーンがこのように動作する理由を説明できる人はいますか? 他のすべてのタイムゾーンでは、NSDateFormatter は実際の NSDates を返します。