0

タイムゾーンに問題があります。

だからここに問題があります:

私は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 形式を使用する必要があります。

4

1 に答える 1

1

私は rmaddy に同意します。以下の行を含めてみてください:--

formatter setDateFormat:@"dd/MM/yyyy hh:mm a"];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:[[NSTimeZone localTimeZone] abbreviation]]];
NSString *minusTenGMT = [formatter stringFromDate:date];// this line you need to include for converting 
NSDate *origDate = [formatter dateFromString:minusTenGMT];
于 2013-10-17T05:45:59.777 に答える