2011-08-17 4 views
6

デバイスタイムゾーンを追加して現在の日付を取得しようとしていますが、そのオリジナルの日付より1時間遅れて表示されています。私は、DaylightSavingTimeの問題を抱えています。 isDaylightSavingTime = FALSEを無効にする方法。ここ 現在のNSDateをシミュレータと同じように取得する方法Date? iPhone Sdk

が..私は使用している、私は1時間差で時刻を取得しています

NSDate *date = [NSDate Date]; 
NSTimeZone *currentTimeZon = [NSTimeZone localTimeZone]; 
if ([currentTimeZon isDaylightSavingTime]) 
{ 
    NSLog(@"East coast is NOT on DT"); 
} 
else 
{ 
    NSLog(@"East coast is on DT"); 

} 
NSTimeInterval timeZoneOffset = [currentTimeZon secondsFromGMTForDate:currentDate]; 
NSTimeInterval gmtTimeInterval = [date timeIntervalSinceReferenceDate] - timeZoneOffset; 
NSDate *gmtDate = [NSDate dateWithTimeIntervalSinceReferenceDate:gmtTimeInterval]; 
NSLog(@"### Announcement gmtDate = %@",gmtDate); 

コードで、日付がperfactです。

+1

各瞬間に1つのNSDateしかありません(どこにいても問題ありません)。別のタイムゾーンで日付を印刷する場合は、NSDateFormatterを使用します。 –

+0

ですが、タイムゾーンの変更に応じて自動的に変更される汎用機能が必要です。 isDaylightSavingTime = FALSEのときに問題があります。だから私はisDaylightSavingTime = TRUEを設定したいが、私はそれをすることはできない – Sujal

答えて

1

NSCalendarを使用すると、タイムゾーン、夏時間などが分かります。@albertamgによると、NSDateはUTC(GMT)での参照からの時間にすぎません。他の概念はありません。

関連する問題