問題が発生しています。着信時間文字列を12時間形式で取得し、それらをNSDateオブジェクトに変換しています。iPhoneが12時間形式の場合、問題ありません。しかし、24時間形式の場合、問題が発生します。デモ用のサンプルコードは次のとおりです。
NSString *theTime = @"3:19 PM";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"h:mm a"]; // "3:19 PM"
NSDate *date = [formatter dateFromString:theTime];
NSString *theString = [formatter stringFromDate:date];
24時間モードでは、日付は1970-01-01 03:19:00で、文字列は「3:19」です-間違っています
12時間モードでは、日付は1970-01-01 15:19:00で、文字列は「3:19PM」です-右
だから...質問1:デバイスの24時間設定が私の日付フォーマッター設定を上書きするのはなぜですか?
さらに重要なことに、質問2:12時間制から24時間制に適切に変換するにはどうすればよいですか?
電話が24時間モードであるかどうかを検出するコードはすでにありますが、文字列を掘り下げて3を15に交換する以外に、これを行うためのクリーンな方法はないようです。