20


38

私はESTタイムゾーンで時間を過ごしています、それはmysqlサーバーのNOW()関数を使って行われます。 私のサーバーはESTにあるので、保存される時間はESTにあります。 iPhone上の自分のアプリから取得するときは、ユーザーの正しいタイムゾーンで表示する必要があります。 それ、どうやったら出来るの?

2 Answer


3


私はそれがあなたがESTによって何を意味するかによると思います - あなたが東海岸米国を意味するならば、そして一般に、それはあなたに04:00 ESTを与えるべきUTCより5時間遅れです(しかし夏時間を考慮しない)。 あいまいなので、可能な限り省略形を使用しないようにしてください。 ESTは、America / DetroitとAustralia / Sydneyの両方の略語です。 NSTimeZone initWithNameを使用すると、より正確な結果が得られます。

http://chronos-st.org/[Chronosタイムゾーンリポジトリ]は、タイムゾーンがどのように機能するのかを理解するのに非常に役立つXMLタイムゾーンデータベースを提供しています。


3


(NSDate *)convertDate:(NSDate *)日付toTimeZone:(NSString *)timeZoneAbbreviation {

NSTimeZone * systemZone = [NSTimeZone systemTimeZone]; NSTimeZone * zoneUTC = [NSTimeZone timeZoneWithAbbreviation:timeZoneAbbreviation]; NSTimeInterval s = [zoneUTC secondsFromGMT];

NSTimeZone * myZone = [NSTimeZone timeZoneWithAbbreviation:[systemZone abbreviationForDate:date]]; NSTimeInterval p = [myZone secondsFromGMT];

NSTimeInterval i = s-p; NSDate * d = [NSDate dateWithTimeInterval:i sinceDate:date];

dを返す。

}

//Test case **note** cgUtil is the class this method is written thus change it accordingly

__block NSDate * now = [NSDateの日付]; NSLog(@ "現在の時刻:%@"、現在);
[[[NSTimeZone abbreviationDictionary] allKeys]
enumerateObjectsUsingBlock:^(NSString * abb、NSUInteger idx、BOOL * stop){NSLog(@ "タイムゾーンabb:%@:時間:%@"、abb、[cgUtil convertDate:now toTimeZone:abb]); ;]];