我正在尝试从用户的日历应用中获取事件。 这本身很好,但有一点不太对。 我在不同的标签中显示titlelocationstartDateendDate 现在,我的问题是endDatestartDate都运行了一个小时,所以当我将事件设置为19:00时,它在我的应用程序中显示为18:00。 我正在使用此代码:

// Create the predicate's start and end dates.
CFGregorianDate gregorianStartDate, gregorianEndDate;
CFGregorianUnits startUnits = {0, 0, -30, 0, 0, 0};
CFGregorianUnits endUnits = {0, 0, 15, 0, 0, 0};
CFTimeZoneRef timeZone = CFTimeZoneCopySystem();

gregorianStartDate = CFAbsoluteTimeGetGregorianDate(
CFAbsoluteTimeAddGregorianUnits(CFAbsoluteTimeGetCurrent(), timeZone, startUnits),
timeZone);
gregorianStartDate.hour = 0;
gregorianStartDate.minute = 0;
gregorianStartDate.second = 0;

gregorianEndDate = CFAbsoluteTimeGetGregorianDate(
CFAbsoluteTimeAddGregorianUnits(CFAbsoluteTimeGetCurrent(), timeZone, endUnits),
timeZone);
gregorianEndDate.hour = 0;
gregorianEndDate.minute = 0;
gregorianEndDate.second = 0;

NSDate* startDate =
[NSDate     dateWithTimeIntervalSinceReferenceDate:CFGregorianDateGetAbsoluteTime(gregorianStartDate,     timeZone)];
NSDate* endDate =
[NSDate     dateWithTimeIntervalSinceReferenceDate:CFGregorianDateGetAbsoluteTime(gregorianEndDate, timeZone)];

CFRelease(timeZone);

// Create the predicate.
NSPredicate *predicate = [eventStore predicateForEventsWithStartDate:startDate     endDate:endDate calendars:nil]; // eventStore is an instance variable.

// Fetch all events that match the predicate.
NSArray *events = [eventStore eventsMatchingPredicate:predicate];

有人知道如何解决这个问题吗? 提前致谢!

===============>>#1 票数:3 已采纳

好吧,自己想通了。 我要做的就是添加这一行:

int z = [[NSTimeZone localTimeZone] secondsFromGMT] / 3600; 

并将z添加到startDateendDate

===============>>#2 票数:1

您是肯定的,系统的时区与日历的时区相同。 我之前遇到过一些奇怪的问题(一两个小时),因为我和创建日历事件的时区不同。 奇怪的问题。

  ask by kopproduction translate from so

未解决问题?本站智能推荐:

1回复

EKEvent上次更新时间

我目前正在构建一个iOS日历应用程序,该应用程序可以访问iPhone的日历以对其进行读/写操作,我面临的问题是我的应用程序应同时同步我的应用程序的日历和iPhone的日历,因此如果我的应用程序修改应该在iPhone日历中修改的事件,反之亦然。 EKEvent类的对象似乎没有updatedA
1回复

如何将EKEvent标记为完成?

我如何让用户将EKEvent标记为完成? 我目前正在获取日期的事件,并将其显示在UITableView中。 我希望用户点击事件单元格以将其标记为完成。 可以进行哪些更改(任何标签或布尔值)以更新并保存该EKEvent以在将来将其显示为完整事件? 我探索了 even
1回复

我可以在RestKit中使用EKEvent吗

我正在iOS上开发Calendar应用。 在我的应用程序中,我使用EKEvent作为事件模型。 由于EKEvent不是普通的核心数据模型,例如,我们应该使用eventWithEventStore:而不是insertNewObjectForEntityForName来创建事件,因此我不确定如果
2回复

iOS - 删除重复的EKEvent,事件再次出现

我在日历中有一个重复发生的事件。 我使用此代码删除单个事件[store removeEvent:event span:EKSpanThisEvent commit:YES error:&errorThis]; 并且此方法返回true但不会从日历中删除该事件。
1回复

如何向EKEvent添加一些其他字段

一种解决方案可能是: 创建一个新模型EKEventExt并在它们之间添加一对一的关系,我不确定它是否可行,因为EKEventExt存储在我的一个sqlite中,而EKEvent存储在事件存储中。
2回复

iOS 6的EKEvent无法以任何方式工作

我尝试与 但是弹出窗口不会显示。 我已经尝试了许多示例,尝试了许多项目,但是在iOS 6上都无法使用。这些应用程序不会显示在privacy> calendars>中。 我想我为此感到生气。 有人可以向我展示一段适用于iOS 6的代码,在其中显示弹出窗口以请求许可,然后在
3回复

将位置添加到EKEvent IOS日历

如何添加位置不仅仅是NSString而且还有纬度和经度,所以它在日历中也显示了一个地图? https://developer.apple.com/LIBRARY/ios/documentation/EventKit/Reference/EKCalendarItemClassRef/ind
1回复

如何从Objective-C的EKEvent类获取Alert和Alarm属性?

我已经从设备及其属性中获取了所有事件,但是我无法在EKEvent获取警报和警报属性
1回复

使用自定义界面直接添加EKEvent受邀者数组

我想在安排会议/活动时添加被邀请者,以使EKEventEditViewController可以显示预先填充到其中的所有被邀请者。但是Apple的文档显示,被邀请者数组是只读属性,我们无法为其分配值。 我已经在某些日历应用中看到过这种情况,其中使用自定义界面和 与自定义字段(预先填充的被
2回复

如何将NSDictionary添加到EKEvent

我想向EKEvent添加额外的数据,我尝试了NSDictionary(有很多数据要添加),但是它不起作用..示例代码: 有任何想法吗?