Objective-cを使用して開発された既存のiOSアプリケーションで問題が発生しました。RFC 3339日付フォーマッタ - 出力日が1日シフトするのはなぜですか?
問題:出力日がPSTタイムゾーンの場合のみ、1日前にシフトしています。
日付を短い形式に変換するコードを以下に示します。
-(NSString *)getDisplayDateFormat:(NSString *)dateString
{
NSLocale *enUSPOSIXLocale;
NSDateFormatter *inputformatter = [[NSDateFormatter alloc] init];
enUSPOSIXLocale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
[inputformatter setLocale:enUSPOSIXLocale];
inputformatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
[inputformatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssSSSZZZZ"];
NSDate *date= [inputformatter dateFromString:dateString];
NSDateFormatter *OutPutformatter = [[NSDateFormatter alloc] init];
[OutPutformatter setDateFormat:@"yyyy-MM-dd"];
NSString *dispalyDateString = [OutPutformatter stringFromDate:date];
return dispalyDateString;
}
入力日付ストリング= 2017-01-16T00:00:00-06:00
UTCフォーマット:日付= 2017年1月16日午前6時00分00秒0000
出力日付ストリング= 2017-01-15
問題の修正にご協力ください。
間違っていません。あなたが見ているものは期待されます。そしてそれはPST(米国の西海岸)だけではありません。 -6より大きいタイムゾーンオフセット(さらに西方向)のデバイスでは、1月15日が表示されます。 – rmaddy
2017-01-16T00:00:00-06:00(例えば、シカゴの1月16日の深夜)は、1月15日にロサンゼルスで午後10時でした。あなたの出力は理にかなっています。問題は、あなたのより広い目的が何であるかです。あなたは何かが起こった時は気にしないと言っていますか?次に、あなたの日付文字列に時間部分を含めないでください。ステップバイステップでは、より広い設計目標を記述するために質問を編集し、それに対処する方法をアドバイスすることができます。 – Rob
説明していただきありがとうございます。サーバーから2017-01-16T00:00:00-06:00の日付を取得中です。2017-01-16に変換する必要があります。親切に提案してください。 – Raj