【发布时间】:2014-05-14 02:19:49
【问题描述】:
我想在 Core Data 中存储时间类型值(但不是日期)。我应该使用哪种数据类型?
【问题讨论】:
标签: ios core-data nsfetchrequest type-conversion nsdatecomponents
我想在 Core Data 中存储时间类型值(但不是日期)。我应该使用哪种数据类型?
【问题讨论】:
标签: ios core-data nsfetchrequest type-conversion nsdatecomponents
可能的选择:
最佳表示取决于涉及您想要的时间的查询类型 执行。如果您想搜索给定的小时、分钟或秒,第一个选项会更好。如果您必须搜索时间间隔,其他选项会更好。
【讨论】:
我的方法可能是将其转换为 HHMMSS 格式,可以是整数或字符串。 NSDate 不合适,因为它存储为自一个纪元以来的间隔(自 1970 年以来的秒数)
【讨论】:
NSDate 的日期部分本质上是时间的一部分。 NSDate 是一个 NSTimeInterval 自参考日期以来正数或负数的秒数。使用语言环境和时区,您可以即时获得适当的本地化显示字符串。
在大多数情况下,将数字存储在 timeIntervalSinceReferenceDate 返回的 NSDate 后面会更有意义
它小巧便携且正确。
然后用 dateWithTimeIntervalSinceReferenceDate 重新创建一个 NSDate:
然后使用带有 NSLocale 和 NSTimeZone 的 NSDateFormatter 来获取适当的值以显示给用户。
这是一套笨重而繁琐的工具,实际上可以帮助您正确地完成工作。 好消息是,您为此付出的所有努力都得到了回报,让下一次变得更容易,并为您提供可以做正确事情的代码,并具有实际上非常容易存储和操作的支持值。 此外,通过正确使用 API,您将不会失去精度,并有更多的可能性向您开放。
尝试单独使用格式字符串似乎很容易和简单,但却是通往糟糕代码的道路。
【讨论】: