【问题标题】:Creating a Calendar App: Time Storage and Representation创建日历应用程序:时间存储和表示
【发布时间】:2012-09-11 06:14:50
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ios calendar nsdate gregorian-calendar


    【解决方案1】:

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

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

    这是因为 NSDate 是一个绝对时间点。您需要根据用户区域设置进行适当的转换以显示。 NSDateComponents(连同 NSCalendar)会处理这个问题。

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

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

    • NSDate 允许您表示绝对时间点。
    • NSCalendar 允许您表示特定的日历,例如公历或希伯来历。它提供了大多数接口 基于日期的计算,并允许您在 NSDate 之间进行转换 对象和 NSDateComponents 对象。
    • NSDateComponents 允许您表示特定日期的组成部分,例如小时、分钟、日、年等。

    【讨论】:

      【解决方案2】:

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

      1. TapkuLibrary
      2. Kal
      3. ios-calendartutorial 进行配置。
      4. GCCalendar

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

      希望对你有帮助

      【讨论】:

        【解决方案3】:

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

        [[NSDate 日期] timeIntervalSince1970];

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-11-17
          • 1970-01-01
          • 1970-01-01
          • 2012-09-30
          • 1970-01-01
          • 2011-10-20
          • 1970-01-01
          相关资源
          最近更新 更多