我通过互联网搜索,发现可以使用以下代码设置[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:创建日期。

10-08 12:47