次を使用して、アプリ内のどこからでもタイムゾーンを任意に設定しようとすると:
[[NSCalendar currentCalendar] setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EST"]];
NSTimeZone *tz = [[NSCalendar currentCalendar] timeZone];
NSLog(@"%@", tz);
logステートメントの結果は次のとおりです。
America / Los_Angeles(PDT)オフセット-25200(昼光)
(これは私のローカルタイムゾーン、つまり[NSTimeZone systemTimeZone]です)
ただし、NSCalendarのカテゴリ内の機能的に類似したコードは正常に機能します。
[self setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EST"]];
NSTimeZone *tz = [self timeZone];
NSLog(@"%@", tz);
そして、ログは次のようになります。
アメリカ/ニューヨーク(EDT)オフセット-14400(昼光)
[NSCalendar currentCalendar]のタイムゾーンの設定はどうなりますか?動作は直感に反します。