当年份小于2000时,initWithTimeIntervalSinceReferenceDate返回null

时间:2016-05-31 14:59:26

标签: ios objective-c nsdate uidatepicker

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

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);

但是这个代码有问题,当我选择比2000年更小的年份(1999,1998,1997 ...)时,命令initWithTimeIntervalSinceReferenceDate总是返回null,但是offset仍然存储价值。

发生了什么,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

考虑以下事实:

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

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