この問題は、正しい時刻が過ぎたところで発生していますが、[formatter setDateFormat:date]
に当たったら、別のタイムゾーンで表示されます。ここではここObjective-Cの時刻を現地時刻に変換する
NSDate* date = user.startDate;
NSDateFormatter *format = [[NSDateFormatter alloc] init];
NSLog(@"-------> (1) time is %@", date);
NSLog(@"-------> (2) time is %@", date);
[format setDateFormat:@"h:mm a"];
NSLog(@"-------> (3) time is %@", date);
NSLog(@"-------> (4) time is %@", [format stringFromDate:date]);
は、ログメッセージ
-------> (1) time is 2016-06-30 09:25:17 +0000
-------> (2) time is 2016-06-30 09:25:17 +0000
-------> (3) time is 2016-06-30 09:25:17 +0000
-------> (4) time is 2:25 AM
ためのデバッガ出力は、私がtime is 9:25 AM
あなたの質問とは関係のないコードを削除しました(しかし、回答の中の参照が有効であるように重複した行を残しておきます)。 – Eiko
(1)、(2)、(3)はちょうど正確な事をしていることに注意してください。日付は不変で、同じインスタンスであり、フォーマッタを使用していません。 – Eiko