initWithTimeIntervalSinceReferenceDate return 年份小于 2000 时为空

initWithTimeIntervalSinceReferenceDate return null when the year is less than 2000

我在下面的代码中存储了日期选择器中我的日期:

uint64_t offset = (uint64_t)[[self.dataPicker date] timeIntervalSinceReferenceDate];
// store this 64-bit unsigned integer.

NSLog(@"Offset -> %llu",offset);

要再次转换日期格式,我使用以下命令:

NSDate *data = [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:offset];
NSLog(@"Before -> %@",data);

但是这段代码有问题,当我 select 小于 2000 (1999,1998,1997 ...) 的年份时,命令 initWithTimeIntervalSinceReferenceDate 总是 return null,但是offset 仍然是存储一个值。

这是怎么回事,我该如何解决这个问题?

考虑这些事实:

  • 参考日期是2001年1月1日。
  • 该日期之前的所有时间间隔值都是负数。
  • 您使用的类型 uint64_t 永远不会为负数。

有一个专用类型NSTimeInterval(又名双)。