2
 NSDate *newDate=[newDate dateByAddingTimeInterval:difference];

现在我想将此 newDate 转换为 NStimeInterval。

我该如何进行这种转换?

4

3 回答 3

12

NDDateNSTimeInterval是两个不同的东西,你不能将 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];
于 2012-07-19T12:29:27.070 回答
2

正如我在上面的评论中提到的,你需要知道你想要NSTimeInterval代表什么,因为它是两个时间点(即两个NSDate实例)之间的距离。

如果您希望它代表您newDate和 2001 年 1 月 1 日 GMT 之间的时间,您可以使用:

- (NSTimeInterval)timeIntervalSinceReferenceDate;

参考)。

但是,如果您希望它表示自另一个参考日期以来的时间,则需要将该参考日期创建为NSDate对象并使用:

- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate;

参考)。

于 2012-07-19T11:55:37.370 回答
-1

稍微短一点:

NSDate *date = ...

NSTimeInterval interval = [date timeIntervalSinceReferenceDate];

并将其取回:

date = [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:timeInterval];
于 2015-02-17T08:58:40.913 回答