0

iPhone アプリで予定をカレンダーに追加する際に問題が発生します。

私はコードを使用しています:

EKEventStore *eventStore = [[EKEventStore alloc] init];
EKEvent *event  = [EKEvent eventWithEventStore:eventStore];
event.title     = self.event.eventTitle;
event.startDate = self.event.startDate;
event.endDate   = self.event.endDate;
event.notes     = self.event.description;

[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;   
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];

eventこれで、カレンダーにが追加されます。問題は、タイムゾーンが明らかにずれていることです。たとえばself.event.startdate、デバッガーの出力012-05-11 20:45:00 +0000は です。これは正しいです。しかし、カレンダーを見ると、予定が午後 4 時 45 分に追加されていました( 20 時 45 分8 時 45 分ではありません)。

po イベントを使用してイベント オブジェクト全体を出力すると、次のようになります。

EKEvent <0xf853320> {EKEvent <0xf853320> {title = Tuesday Night Lights!; location = (null); calendar = (null); alarms = (null); URL = (null); lastModified = (null); timeZone = EST (GMT-05:00) offset -18000}; location = (null); startDate = 2012-05-11 20:45:00 +0000; endDate = 2012-05-11 21:45:00 +0000; allDay = 0; floating = 0; recurrence = (null); attendees = (null)}

ここでもstartDate正しく読み取ります。私はESTタイムゾーンにいます (電話と同様)。コードを取得して、午後 8 時 45 分に予定をカレンダーに追加するにはどうすればよいですか?

どんな考えでも非常に役に立ちます!

4

1 に答える 1

0

イベントは正しい時刻に追加されます。正しいタイムゾーン修正で時間を表示するだけです。これで問題が解決したことがわかりました:

このように書く代わりに:

NSLog(@"startDate: %@", [startDate description]);

次のように書きます。

NSLog(@"startDate: %@", [startDate descriptionWithLocale:[NSLocale currentLocale]]);

これが問題の解決に役立つことを願っています。

于 2012-07-04T07:48:42.117 に答える