0

EKEventを使用して の startDate プロパティを正規化しNSDateFormatter、タイムゾーンを次のように設定する場合

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm a"];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];

 event.startDate = [formatter dateFromString:[NSString stringWithFormat:@"%@", [event.startDate]]];

後でそのイベントに変更を加えると、電話する必要があります

[self.event.eventStore saveEvent:currentEvent span:EKSpanThisEvent commit:YES error:nil];

サーバー上のタイムゾーンを上書きして、その共有カレンダーイベントを最初に作成した別の状態の人 (GCal を使用する人) に問題を引き起こしますか、それとも単にローカルな変更ですか?

イベントに影響する場合、UI で参照するたびにイベントの形式を変更することなく、アプリ側のイベントが常にユーザーの現在のタイム ゾーンを表すようにする最善の方法は何ですか?

4

1 に答える 1

1

はい、イベントのタイムゾーンは同期されます。イベントが山岳時間の 9 時に発生した場合、デバイスの一般設定が山岳時間に設定されている人には、イベントは 9 時に発生したと表示されます。デバイスが東部時間の場合、イベントは 7 時に発生するように見えます。イベントのタイム ゾーンを東部に変更すると、山岳時間のデバイスには 11 時に発生したイベントが表示され、東部時間のデバイスにはイベントが発生したことが表示されます。 at 9. したがって、タイム ゾーンを変更しても、それ自体のタイム ゾーンで発生する時刻は変更されませんが、移動元の場所に相対的に変更されます。

イベントがいつ発生するかをユーザーに尋ねた後、次の 2 つのことを行うことができます。1) ユーザー デバイスの現在のタイム ゾーンでイベントが発生すると想定できます。2)イベントが発生する場所を尋ねて、イベントのタイムゾーンをその場所に設定できます。

間違った時刻のイベントがある場合は、最初にそのタイム ゾーンをイベントが実際に発生している場所に設定し、次にイベントの発生時刻を実際に発生した時刻に変更する必要があります。

イベント セットのデータを正しく取得することに集中すると、カレンダーを共有しているすべてのデバイスに正しく表示されます。

于 2013-09-01T05:46:09.813 に答える