2009-07-04 3 views
20

私はESTタイムゾーンに時間があります。これは、mysqlサーバのNOW()関数を使って行います。私のサーバーはESTに位置しているので、保存された時間はESTになります。私がiPhone上の私のアプリケーションからそれを取得するとき、私はそれをユーザーの正しい時間帯に表示する必要があります。それ、どうやったら出来るの?時間をiPhoneデバイスのタイムゾーンに変換するにはどうすればいいですか?

答えて

3

東海岸を意味する場合は、米国東海岸を意味する場合は、一般的にはUTCの5時間遅れですが、夏時間を考慮しない場合は04:00となります。できるだけ略語を使用しないようにしてください。 ESTはAmerica/DetroitとAustralia/Sydneyの略です。 NSTimeZone initWithNameを使用すると、より正確な結果が得られます。

Chronos Time Zone Repositoryは、タイムゾーンがどのように機能するかを理解するのに役立つ、きれいに読めるXMLタイムゾーンデータベースを提供します(むしろ面倒で変更可能です)。

3

//あなたが

+ (NSDate *) convertDate:(NSDate *) date 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]; 

    return d; 

} 


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

__block NSDate *now = [NSDate date]; 
NSLog(@"Current time:%@", now); 
[[[NSTimeZone abbreviationDictionary] allKeys] enumerateObjectsUsingBlock:^(NSString * abb, NSUInteger idx, BOOL *stop) { 
    NSLog(@"Time zone abb:%@:Time:%@",abb,[cgUtil convertDate:now toTimeZone:abb]); 
}]; 
を希望する時間帯に日付を変換するには、以下の機能を使用することができます
関連する問題