タイムゾーンに問題があります。
だからここに問題があります:
私はGMTの日付を持っています
2013-10-18 00:00:00 +0000
GMT-10に変換します
[formatter setDateFormat:@"dd/MM/yyyy hh:mm a"];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT-10"]];
NSString *minusTenGMT = [formatter stringFromDate:date];
2013/10/17 14:00 _
それは私に文字列を与えます: 17/10/2013 02:00 PM
したがって、基本的にminusTenGMTは文字列の日付を持つ文字列です
マイナステンGMTのGMT値を取得したい場合。プロセスを逆にする必要があります
[formatter setDateFormat:@"dd/MM/yyyy hh:mm a"];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
NSDate *origDate = [formatter dateFromString:minusTenGMT];
しかし問題は、これの結果は
2013-10-18 08:00:00 +0000 元の日付と比較: 2013-10-18 00:00:00 +0000
、私が検索した内容に基づいて、この文字列のタイムゾーンは GMT に戻りますか? 何が起こっている?。
しかし、GMT 略語を使用せず、ローカル タイムゾーンを使用すると、
[formatter setDateFormat:@"dd/MM/yyyy hh:mm a"];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:[[NSTimeZone localTimeZone] abbreviation]]];
NSDate *origDate = [formatter dateFromString:minusTenGMT];
結果は、オリジナルとまったく同じ2013-10-18 00:00:00 +0000 です。
私のローカルは GMT-10 です。ios シミュレーターとシステムを使用して場所を変更してみました。ローカルが使用されると、それらはすべて元に戻ります(これは正しいです)。しかし、GMT の場合、それらは異なる出力を出します。
誰が何が起こっているのか教えてもらえますか? 日付の元のタイムゾーンの代わりに自分のタイムゾーンを使用すると、なぜ機能するのか知りたいです。
前もって感謝します:D。
編集:タイプミスを修正しました。
気になるのは、GMT に戻すときに GMT-10 を使用する必要があるのはなぜですか??
または私は理解するにはあまりにも愚かですか?GMT-10 を取得するために GMT-10 形式を使用しました。
GMT-10 から GMT を取得するには、GMT 形式を使用する必要がありますが、機能していません。GMT を取得するには GMT-10 形式を使用する必要があります。