首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存后提前一天的日历集中的事件日期

保存后提前一天的日历集中的事件日期
EN

Stack Overflow用户
提问于 2013-04-10 16:13:24
回答 2查看 738关注 0票数 0

我是EKEventKit的新手,我正在尝试使用EKEvent在日历中创建事件。它工作得很好,但在保存事件后,当我再次检查事件日期时,它会提前一天获得。

我在这里写我的代码和输出。请看一看

代码语言:javascript
复制
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 ::

代码语言:javascript
复制
Before Saving Date : 2013-04-10 08:00:40 +0000
After Saving Date:   2013-04-09 00:00:00 +0000

我们可以在这里看到有1天之前。但它们应该是相同的。

我希望我的问题非常清楚,但如果有任何问题,你可以问我。

感谢大家的期待。

EN

回答 2

Stack Overflow用户

发布于 2013-04-10 16:58:45

为什么要取消时区?如果你的申请是针对不同国家的,那么你就不应该这么做。

代码语言:javascript
复制
event.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

是的,打印的NSDate与将添加到EvencCalendar的日期不同-这是可以的(因为GMT +x等)。添加日期将等于您的开始日期。

票数 1
EN

Stack Overflow用户

发布于 2013-04-10 16:51:39

我不能重现你的问题。NSDate date会提前一天返回日期,这看起来确实很奇怪。您确定更改的不是event.startDate和event.endDate吗?我用下面的日志记录了你的描述行为:

代码语言:javascript
复制
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来调整您的用户设置,然后让神奇的事情发生:-)您的事件日期将根据您的用户观点设置为当前日期。

干杯,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15920400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档