我通过互联网搜索,发现可以使用以下代码设置[NSTimeInterval]。
myCalendarDay.date = [date timeIntervalSince1970];
我不明白的是为什么调试器显示如下值。
[date]是[NSDate]类型,而[myCalendarDay.date]是[NSTimeInterval]类型。
我检查了它们的值,发现该年份距离31年还有一段距离。
这是正确的数据吗?
最佳答案
timeIntervalSince1970
返回一个NSTimeInterval
,表示自1970年1月1日GMT的第一个瞬间起经过的秒数。
当您存储NSDate
时,它实际上存储的是自格林威治标准时间2001年1月1日的第一个瞬间起经过的秒数。
您要让日期对象为您提供一个参考日期的表示形式,然后将该值分配给另一个日期对象(最有可能是在生成子类代码时被告知要使用本机值的核心数据对象)。它需要时间间隔,而ASSUMES则使用正确的参考日期。
这两个日期之间有31年,而并非巧合,日期对象中的时间与核心数据实例中的日期之间有31年。
如果您确实要使用1970作为基础,则应使用dateWithTimeIntervalSince1970:
创建日期。