如何解决设置了事件提醒时间,关闭6小时
| 我已在此问题上寻求帮助,但没有找到答案。我正在使用代码设置事件提醒。使用断点并通过。我看到活动时间正确。以下是我设置提醒的方法EKEventStore *eventDB = [[[EKEventStore alloc] init]autorelease];
EKEvent *myEvent = [EKEvent eventWithEventStore:eventDB];
NSString * eventTitle = [NSString stringWithFormat:@\"%@ - %@\",app.dealerBusinessName,serviceOrComments.text];
myEvent.title = eventTitle;
// \"destinationDate\" is the date I want to set the reminder for it is correct in debugger
//its format is 2011-06-03 15:45:58 +0000 which means (i would think) that the reminder
//should be set for 6/3/2011 3:45PM but its always 6 hours earlier (in this case at 9:45am
NSLog(@\"value: %@\",destinationDate);
myEvent.startDate = [[[NSDate alloc] initWithTimeInterval:0 sinceDate:destinationDate ]autorelease];
myEvent.endDate = [[[NSDate alloc] initWithTimeInterval:3600 sinceDate:myEvent.startDate]autorelease];
myEvent.allDay = NO;
myAlarmsArray = [[NSMutableArray alloc] init];
EKAlarm *alarm1 = [EKAlarm alarmWithRelativeOffset:-3600]; // 1 Hour
EKAlarm *alarm2 = [EKAlarm alarmWithRelativeOffset:-86400]; // 1 Day
[myAlarmsArray addObject:alarm1];
[myAlarmsArray addObject:alarm2];
myEvent.alarms = myAlarmsArray;
[myEvent setCalendar:[eventDB defaultCalendarForNewEvents]];
NSError *err;
[eventDB saveEvent:myEvent span:EKSpanThisEvent error:&err];
if (err == noErr) {
//no error,but do not show alert because we do that below.
}
现在我很确定我可以将时间增加21600,但这是正确的方法吗?我不了解NSDate是如何工作的,它使我发疯。有人可以向我解释这样做的正确方法是什么?谢谢!
解决方法
最近我遇到了类似的问题,这真的使我发疯。您必须考虑您的时区(或将模拟器/设备设置为时区)。 NSDate始终代表GMT时间,NSCalendar代表时区内的时间。因此,您遇到的时差将恰好是您所在时区与格林尼治标准时间之间的时差(您的闹钟会在格林尼治标准时间15:45触发)。
由于我希望自己的日期是绝对的,无论时区如何,因此我将所有NSCalendars设置为GMT-在我的情况下,当然是YMMV,它可以工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。