タイムゾーンの問題が原因でNSDate
、どこかで立ち往生しています。NSDateFormatter
UTC (UNIX 時間に変換される) でのみサーバーに時刻を送信する必要があります。
ここに私がやっていることのいくつかのステップがあります:
カレンダーから日付を選択すると、現在の時刻が追加され、UTC に変換されます。
選択した日付と現在の日付を比較します。選択した日付が過去の日付か未来の日付かを知るだけです。(過去/未来/現在の日付に基づいて実行される他の操作はほとんどありません)。
私はこのコードを試しました:
のカテゴリNSDate
:
-(NSDate *) toLocalTime{
NSDate* sourceDate = self;
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithName:@"UTC"];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
NSDate* destinationDate = [[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate];
return destinationDate;
}
しかし、日付をローカルに変換しようとすると問題が発生します(現在の時刻がローカルタイムゾーンにあるかどうかわからない場合があります)。それらがUTCにある場合、上記の方法は正常に機能します。
時刻がすでにローカル タイムゾーンにある場合は、再び が追加され、interval
間違った時刻が表示されます。
私はアイデアがありません、助けてください。
どんなアイデアでも高く評価されます。