【问题标题】:Get wrong time when adding an event to default calendar in iPhone将事件添加到 iPhone 中的默认日历时出现错误的时间
【发布时间】:2013-03-21 06:43:26
【问题描述】:

现在我正在 iPhone 上开发日历应用程序。我正在尝试将事件添加到 iPhone 中的默认日历。在这种情况下,添加事件已成功完成。但我无法在正确的开始时间添加事件。事件的开始日期完全正确,但 iPhone 的默认日历中的时间不同。我使用了以下代码。请帮助我..

NSLog(@"起始标签为:%@",startLabel.text);// 2013-03-28 12:03:41 PM

NSLog(@"end label is : %@",endLabel.text);//2013-03-28 01:03:41 PM


     NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
     [dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];
     [dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
     NSLog(@"description is : %@",[dateFormat description]);


     NSDate *sDate=[dateFormat dateFromString:startLabel.text];      
     NSDate *eDate = [dateFormat dateFromString:endLabel.text];
     NSLog(@"startDate is : %@",sDate);//2013-03-28 12:03:41 +0000
     NSLog(@"endDate is : %@",eDate);// 2013-03-28 13:03:41 +0000
     self.eventStore = [[EKEventStore alloc] init];
     EKEvent *myevent = [EKEvent eventWithEventStore:self.eventStore];
     myevent.title = titleFld.text;
     myevent.location  = locFld.text;
     myevent.startDate = sDate;
     myevent.endDate =  eDate;
     [myevent setCalendar:[eventStore defaultCalendarForNewEvents]];
     NSError *err;
     [self.eventStore saveEvent:myevent span:EKSpanThisEvent error:&err];

【问题讨论】:

    标签: iphone ios objective-c calendar ekeventstore


    【解决方案1】:

    使用[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];

    而不是

    [dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

    希望这能解决您的问题。

    【讨论】:

    • 根据您的意见,我得到的开始日期是 2013-03-02 06:51:37 +0000 这个开始标签 2013-03-02 12:21:37 PM
    • 你是如何得到 endLabel.text 日期的?
    • 从 UIDatePicker 获取开始和结束日期
    • 确保您的日期选择器区域设置为默认。
    • 评论 [dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];并立即尝试。因为我得到了相同的日期。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多