2011-02-03 34 views
0

私たちのアプリでは、常に現在の東部時間(ESTまたはEDT)を選択する必要があります。日付と時間帯

は、私たちは、アプリデリゲートに以下のようにアプリケーションのタイムゾーンを設定します。

NSDateFormatter *formatForFileName = [[NSDateFormatter alloc] init]; 
[formatForFileName setDateFormat:@"yyyyMMdd"]; 
NSLocale *uslocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
[formatForFileName setLocale:uslocale]; 
[uslocale release]; 

を私のiPadを補正するように設定されている場合は、次のよう

NSTimeZone *ESTTimeZone = [NSTimeZone timeZoneWithName:@"US/Eastern"]; 
[NSTimeZone setDefaultTimeZone:ESTTimeZone]; 

また、NSDateFormatterのために、私たちはロケールを設定しましたESTの日付と時刻は問題ありません。現在の日付を次のように記録する場合:

NSLog(@"current date : %@",[formatForFileName stringFromDate:[NSDate date]]); 

今日の日付が正しく表示されます。 iPadの日付を翌日の日付に変更して現在の日付を記録すると、現在のESTの日付と時刻が返されます。 [NSDate date]は現在のiPadの日付(翌日の日付)と時刻を返します.ESTの日付と時刻は返しません。

ユーザーがiPadで設定した内容に関係なく、[NSDate date]を使用して正しいESTの日付と時刻を取得する方法はありますか。

ありがとうございました。

答えて

1

私はあなたの質問を理解しているかわかりません。 [NSDate date]は、OSが現在考えている日付/時刻、すなわちデバイスの時計が設定されている時刻を常に日付として作成します。これが現在の時刻かどうか疑問がある場合は、インターネット上の信頼できるタイムサーバーに連絡し、そこから時間を取得する必要があります。

0

[NSDate date]は、現在のシステムの日付と時刻に設定された日付を返します。したがって、ユーザーがシステム上の翌日の日付に変更すると、[NSDate date]は翌日の日付を返します。 NSDateは、システムの日付が正しい日付である(正当な理由で)と仮定します。

実際のEST日付を表示するには、希望する日付のシステム以外のソース(リモートソース)を照会する必要があります。