uidateピッカーには適切なユーザーゾーンが設定されています。
NSDate *date= Uidatepicker.date;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeZone:[NSTimeZone localTimezone]];
//show correct date and time
NSString *string=[dateFormatter stringFromDate:date];
//back to date
NSDate *outDate=[dateFormatter dateFromString:string];
期限切れの日付は別のコントローラーに渡され、最終的に1970年以降の時間を使用してdbにクエリを実行するために使用されます。クエリで使用される日付は+4時間(GMT時間)です。現地時間があるべきだと思います。NSdateにタイムゾーンがないことは知っていますが、dbクエリに正しい時刻が必要です。dbは、1970年以降、正しい時刻になっているようです(現地時間に基づく)。この場合、時間が+4時間ずれているため、文字列に変換して確認しています。任意の提案とあなたの助けに感謝します。