NSDate *newDate=[newDate dateByAddingTimeInterval:difference];
现在我想将此 newDate 转换为 NStimeInterval。
我该如何进行这种转换?
NSDate *newDate=[newDate dateByAddingTimeInterval:difference];
现在我想将此 newDate 转换为 NStimeInterval。
我该如何进行这种转换?
NDDate
和NSTimeInterval
是两个不同的东西,你不能将 a 转换NSDate
为 a NSTimeInterval
,反之亦然。
NSDate
表示绝对日期并NSTimeInterval
表示两个日期之间的时间。
但是,您可以使用此方法从参考日期创建 NSTimeInterval:
- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate
你可以这样做:
NSDate *referenceDate = /* Your reference date */
NSDate *date = /* Your date */
NSTimeInterval timeInterval = [date timeIntervalSinceDate:referenceDate];
正如我在上面的评论中提到的,你需要知道你想要NSTimeInterval
代表什么,因为它是两个时间点(即两个NSDate
实例)之间的距离。
如果您希望它代表您newDate
和 2001 年 1 月 1 日 GMT 之间的时间,您可以使用:
- (NSTimeInterval)timeIntervalSinceReferenceDate;
(参考)。
但是,如果您希望它表示自另一个参考日期以来的时间,则需要将该参考日期创建为NSDate
对象并使用:
- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate;
(参考)。
稍微短一点:
NSDate *date = ...
NSTimeInterval interval = [date timeIntervalSinceReferenceDate];
并将其取回:
date = [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:timeInterval];