2

アプリにカレンダーイベントを追加するために EKEventEditViewController で使用している EKEvent があります。日付は正確ですが、時刻が間違っています。誰かが私がここで間違っていることを理解するのを手伝ってくれます..

これは、イベントを生成するコードです..

EKEvent *addEvent=[EKEvent eventWithEventStore:eventStore];
addEvent.title=event.title;
NSLog(@"Saving Event... %@",[event.date description]);
addEvent.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
addEvent.startDate= event.date;
NSLog(@"Event Date... %@",[addEvent.startDate description]);
addEvent.endDate=[addEvent.startDate dateByAddingTimeInterval:600];
[addEvent setCalendar:[eventStore defaultCalendarForNewEvents]];
addEvent.alarms=[NSArray arrayWithObject:[EKAlarm alarmWithRelativeOffset:-3600]];

デバイスのタイムゾーンが「ポートルイス、モーリシャス」に設定されています。

私のコンソール出力は..

Saving Event... 2012-12-19 20:00:00 +0000
Event Date... 2012-12-19 20:00:00 +0000

しかし、EKEventEditViewController では、開始日が表示されますThu,20 Dec 0:00.

4

1 に答える 1

0

これは、"2012-12-19 20:00:00 +0000" (つまり、GMT の午後 8 時) のイベントが真夜中にマリシャスで行われるためです。モーリシャスのユーザーにカレンダーに追加するように依頼しているため、デバイスのローカル タイムゾーンである午前 0 時にイベントの日付が表示されます。

イベントがモーリシャスで午後 8 時に開催されている場合、元の時刻は正しくありません。これは、GMT で午後 8 時であると言っているからです。イベントが実際に GMT の午後 8 時 (モーリシャスでは真夜中) に行われていると言っている場合、EKEventEditViewControllerはローカル タイムゾーンの真夜中に従って時刻を表示します。

ユーザーがタイムゾーン サポートをオンにしている場合、カレンダー アプリでイベントをプルアップすると、イベントの作成時に指定したタイムゾーンが表示されます。タイムゾーンのサポートがオンになっていない場合は、ローカル タイムゾーンで表示されます (必要に応じて開始時刻を調整します)。

残念ながら、カレンダー アプリとは異なり、EKEventEditViewControllerユーザーがタイムゾーン サポートを有効にしている場合でも、タイムゾーンは表示されず、現地時間で表示されるようです。このタイムゾーン機能はサポートされていないようですが、カレンダーを見ると正しいはずです。少なくとも、イベントは適切なタイムゾーン情報とともに保存されます。

于 2012-12-17T18:33:30.130 に答える