如何向NSDate添加时间间隔?

时间:2010-02-24 20:33:01

标签: objective-c cocoa cocoa-touch nsdate date-arithmetic

我有一个NSDate和一个持续时间。我需要在持续时间之后得到时间

鉴于


  日期是“2010-02-24 12:30:00 -1000”
  持续时间为3600秒

我需要“2010-02-24 13:30:00 -1000”

我认为dateWithTimeIntervalSinceReferenceDate:会做到这一点,但我现在看到这给出的日期偏离2001年1月1日GMT。

我需要使用另一个C函数

5 个答案:

答案 0 :(得分:32)

正如DyingCactus所述,你可以使用NSDate的addTimeInterval方法,但是根据操作系统版本会产生编译器警告,因为截至2009-08-17,它已在10.6中弃用。

目前推荐的方法是在NSDate上使用dateByAddingTimeInterval:

NSDate *newDate = [oldDate dateByAddingTimeInterval:3600];

请注意,如果您的目标是10.5或更早,原始答案将有效。

答案 1 :(得分:4)

您希望类方法dateWithTimeInterval:sinceDate:采用开始日期和时间间隔NSDate docs

答案 2 :(得分:3)

您可以使用NSDate的addTimeInterval实例方法:

NSDate *newDate = [oldDate addTimeInterval:3600];

编辑:正如Chip Coons正确指出的那样,此方法已被弃用。请改用其他方法之一。

答案 3 :(得分:1)

对于那些寻找Swift 3.x版本的人:

let newDate = Date.init(timeInterval: 2600, since: oldDate)

答案 4 :(得分:0)

您可以使用NSDate的较新dateByAddingTimeInterval实例方法,而不是使用已弃用的addTimeInterval方法。

NSDate *newDate = [oldDate dateByAddingTimeInterval:2500];