0

私は EKEventKit を初めて使用し、EKEvent を使用してカレンダーにイベントを作成しようとしています。正常に動作しますが、イベントを保存した後、イベントの日付を再度確認すると、1 日早くなります。

ここに出力付きのコードを書いています。ご覧ください

EKEventStore *eventStore = [[EKEventStore alloc]init];
    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
        EKEvent *event = [EKEvent eventWithEventStore:eventStore];

        // set Event Title and Notes
        event.title = @"My New Event";
        event.notes = @"New event notes are added by azeem";

        // set Event Start and End date here
        NSLog(@"before saving Date: %@",[NSDate date]);
        event.startDate = [NSDate date];
        event.endDate =[NSDate date];

        // set Evet other Properties here
        event.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
        event.calendar = [eventStore defaultCalendarForNewEvents];
        event.allDay = YES;

        [eventStore saveEvent:event span:EKSpanThisEvent error:&error];
        NSLog(@"After saving Date: %@",event.startDate);

OUTPUT ::

Before Saving Date : 2013-04-10 08:00:40 +0000
After Saving Date:   2013-04-09 00:00:00 +0000

ここで、1日前があることがわかります。しかし、それらは同じでなければなりません。

私の質問が非常に明確であることを願っていますが、それでも質問があれば、私に尋ねてください。

期待して感謝します。

4

2 に答える 2

1

なぜタイムゾーンを無効にするのですか?アプリケーションが異なる国向けである場合は、それを行うべきではありません。

event.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

はい、印刷された NSDate は、EvencCalendar に追加される日付とは異なります。問題ありません (GMT +x などのため)。追加日は開始日と同じになります。

于 2013-04-10T08:58:45.287 に答える
0

問題を再現できません... [NSDate date] が 1 日前の日付を返すのは確かに奇妙に思えます。変更されるのは event.startDate と event.endDate ではありませんか? 次のログで記述動作を取得しました。

event.startDate = [NSDate date];
NSLog(@"before saving Date: %@",event.startDate);
event.endDate =[NSDate date];

// set Evet other Properties here
event.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:10];
event.calendar = [eventStore defaultCalendarForNewEvents];
event.allDay = YES;

[eventStore saveEvent:event span:EKSpanThisEvent error:&error];
NSLog(@"After saving Date: %@",event.startDate);

これは timeZone の設定によるものです。[NSTimeZone systemTimeZone] または [NSTimeZone localTimeZone] を使用してユーザー設定を調整し、魔法を起こすことをお勧めします :-) イベントの日付は、ユーザーの視点に従って現在の日付に設定されます。

乾杯、

于 2013-04-10T08:51:38.610 に答える