在Core Data中存储时间间隔的正确方法是什么?

时间:2016-07-10 17:58:21

标签: ios swift core-data nsdatecomponents nstimeinterval

我需要在应用的数据库中存储一个时间间隔,该时间间隔偶尔会添加到NSDate。问题是,我不知道要为它选择什么数据类型。有些人建议存储NSTimeInterval,但是当用户的时区发生变化时会导致计算错误吗?也许最好存储NSDateComponents(作为" Transformable"数据类型)还是有另一种更好的方法来存储它?

1 个答案:

答案 0 :(得分:8)

一分钟是60秒,一小时是3600秒,无论如何 当前日期,时区或日历。如果要将持续时间存储为“24小时”,则可以将其存储为值为24 * 3600的时间间隔。

所有较大的单位,以 day开头,必须按照解释 当前日期,时区和日历。持续时间“一天”即可 在夏令时间的地区,23,24或25小时。 特别是,“24小时”和“1天”具有不同的含义。 格里高利时期间“1个月”的持续时间为28至31天 日历,“1年”可以是365或366天。其他日历可能有 其他“特点”。

因此,必须存储涉及“日”或更大单位的所有持续时间 作为日期组件。转换为NSDateComponents是一种可能性, 或者你可以添加多个属性“durationDays”, “durationMonths”等等到您的Core Data实体。这具有优势 可以在获取请求或排序中引用这些值 描述符。