我需要在应用的数据库中存储一个时间间隔,该时间间隔偶尔会添加到NSDate
。问题是,我不知道要为它选择什么数据类型。有些人建议存储NSTimeInterval
,但是当用户的时区发生变化时会导致计算错误吗?也许最好存储NSDateComponents
(作为" Transformable"数据类型)还是有另一种更好的方法来存储它?
答案 0 :(得分:8)
一分钟是60秒,一小时是3600秒,无论如何 当前日期,时区或日历。如果要将持续时间存储为“24小时”,则可以将其存储为值为24 * 3600的时间间隔。
所有较大的单位,以 day开头,必须按照解释 当前日期,时区和日历。持续时间“一天”即可 在夏令时间的地区,23,24或25小时。 特别是,“24小时”和“1天”具有不同的含义。 格里高利时期间“1个月”的持续时间为28至31天 日历,“1年”可以是365或366天。其他日历可能有 其他“特点”。
因此,必须存储涉及“日”或更大单位的所有持续时间
作为日期组件。转换为NSDateComponents
是一种可能性,
或者你可以添加多个属性“durationDays”,
“durationMonths”等等到您的Core Data实体。这具有优势
可以在获取请求或排序中引用这些值
描述符。