创建日历应用程序:时间存储和表示

时间:2012-09-11 06:14:51

标签: ios calendar nsdate gregorian-calendar

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

我正在使用本地通知进行提醒。存储活动日期,闹钟日期或其他什么的最佳方式是什么?我的意思是,问题是由时区差异引起的。我正在将事件存储在Core Data中。我一直在使用NSDate进行日期存储,但我不确定它是一种在日历视图中查询和表示事件的好方法。由于时区,事件在错误的日子出现(比如从实际日期开始前一天)。

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

修改:我不是只询问有关日历视图的问题。我问的是日历应用的基础设施。

3 个答案:

答案 0 :(得分:3)

您应该使用NSDate存储,并与NSDateComponents一起提供。

  

由于时区,事件在错误的日子出现(比如从实际日期开始前一天)。

这是因为NSDate是绝对时间点。您需要根据用户区域设置进行正确的转换。 NSDateComponents(以及NSCalendar)将负责这一点。

The Date and Time Programming Guide会告诉你所有你需要知道的内容,但第一段确定了基调:

  

有三个主要类用于处理日期和时间。

     
      
  • NSDate允许您表示绝对时间点。
  •   
  • NSCalendar允许您表示特定日历,例如格里高利历或希伯来日历。它为大多数人提供了界面   基于日期的计算,允许您在NSDate之间进行转换   对象和NSDateComponents对象。
  •   
  • NSDateComponents允许您表示特定日期的组件,例如小时,分钟,日,年等。
  •   

答案 1 :(得分:1)

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

  1. TapkuLibrary
  2. Kal
  3. ios-calendartutorial进行配置。
  4. GCCalendar
  5. 让您的日历应用有效。

    希望这有帮助

答案 2 :(得分:0)

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

[[NSDate date] timeIntervalSince1970];

我并不知道为什么当你存储为NSDate值时你会出错。有关这方面的更多信息吗?