1

我一直在为 iOS 开发一个日历应用程序,这让我遇到了很多问题。

我正在使用本地通知进行提醒。存储事件日期、警报日期或其他内容的最佳方式是什么?我的意思是,问题是由时区差异等引起的。我将事件存储在核心数据中。我一直在使用 NSDate 进行日期存储,但我不确定这是在日历视图中查询和表示事件的好方法。由于时区的原因,事件出现在错误的日期(例如距真实日期的前 1 天)。

另外,是否有我可以查看的教程或开源项目?我没有遇到任何全面的东西,只有关于如何使用tapku 日历视图的小教程。

编辑:我不是在问关于日历视图的问题。我在询问日历应用程序的基础架构。

4

3 回答 3

3

您应该使用 NSDate 存储,并使用 NSDateComponents 呈现。

由于时区的原因,事件出现在错误的日期(例如距真实日期的前 1 天)。

This happens because NSDate is an absolute point in time. You need to do the proper conversions to display based on the users locale. The NSDateComponents (along with NSCalendar) will take care of this.

The Date and Time Programming Guide will tell you all that you need to know, but the first paragraph sets the tone:

There are three main classes used for working with dates and times.

  • NSDate allows you to represent an absolute point in time.
  • NSCalendar allows you to represent a particular calendar, such as a Gregorian or Hebrew calendar. It provides the interface for most date-based calculations and allows you to convert between NSDate objects and NSDateComponents objects.
  • NSDateComponents allows you to represent the components of a particular date, such as hour, minute, day, year, and so on.
于 2012-09-11T07:11:56.853 回答
1

您可以参考/使用 Github 上提供的以下框架

  1. 塔库图书馆
  2. 卡尔
  3. 带有配置教程的ios 日历
  4. GCC日历

让您的日历应用程序正常工作。

希望这可以帮助

于 2012-09-11T06:26:00.673 回答
0

我认为您可以存储日期的时间戳值

[[NSDate 日期] timeIntervalSince1970];

而且我不明白为什么当您存储为 NSDate 值时会出错。还有更多相关信息吗?

于 2012-09-11T06:59:44.010 回答