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

Ran*_*dex 4 core-data nsdatecomponents nstimeinterval ios swift

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

Mar*_*n R 8

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

所有较大的单位,从白天开始,必须根据当前日期,时区和日历进行解释.在夏令时区域,"一天"的持续时间可以是23天,24天或25小时.特别是,"24小时"和"1天"具有不同的含义.阳历中"持续时间"1个月可以是28到31天,"1年"可以是365或366天.其他日历可能有其他"特殊性".

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