在 Core Data 中存储时间间隔的正确方法是什么?
What's the correct way to store a time interval in Core Data?
我需要在应用程序的数据库中存储一个时间间隔,该时间间隔会偶尔添加到 NSDate
。问题是,我不知道为它选择什么数据类型。有人建议存储NSTimeInterval
,但是当用户的时区改变时会导致计算错误吗?也许最好存储 NSDateComponents
(作为 "Transformable" 数据类型)或者是否有其他更好的方法?
一分钟是60秒,一小时是3600秒,不管怎样
当前日期、时区或日历。如果要存储持续时间“24 小时”,则可以将其存储为值为 24*3600 的时间间隔。
所有更大的单位,从天开始,必须根据
当前日期、时区和日历。持续时间 "one day" 可以是
在实行夏令时的地区为 23、24 或 25 小时。
特别是,“24 小时”和“1 天”具有不同的含义。
持续时间“1 个月”在公历中可以是 28 到 31 天
日历,“1 年”可以是 365 天或 366 天。其他日历可能有
其他 "peculiarities".
因此必须存储涉及 "day" 或更大单位的所有持续时间
作为日期组件。转换为 NSDateComponents
是一种可能,
或者,您可以添加多个属性 "durationDays",
"durationMonths",等等到您的核心数据实体。这有好处
可以在获取请求或排序中引用这些值
描述符。
我需要在应用程序的数据库中存储一个时间间隔,该时间间隔会偶尔添加到 NSDate
。问题是,我不知道为它选择什么数据类型。有人建议存储NSTimeInterval
,但是当用户的时区改变时会导致计算错误吗?也许最好存储 NSDateComponents
(作为 "Transformable" 数据类型)或者是否有其他更好的方法?
一分钟是60秒,一小时是3600秒,不管怎样 当前日期、时区或日历。如果要存储持续时间“24 小时”,则可以将其存储为值为 24*3600 的时间间隔。
所有更大的单位,从天开始,必须根据 当前日期、时区和日历。持续时间 "one day" 可以是 在实行夏令时的地区为 23、24 或 25 小时。 特别是,“24 小时”和“1 天”具有不同的含义。 持续时间“1 个月”在公历中可以是 28 到 31 天 日历,“1 年”可以是 365 天或 366 天。其他日历可能有 其他 "peculiarities".
因此必须存储涉及 "day" 或更大单位的所有持续时间
作为日期组件。转换为 NSDateComponents
是一种可能,
或者,您可以添加多个属性 "durationDays",
"durationMonths",等等到您的核心数据实体。这有好处
可以在获取请求或排序中引用这些值
描述符。