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
(又名双)。
我在下面的代码中存储了日期选择器中我的日期:
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
(又名双)。