代码之家  ›  专栏  ›  技术社区  ›  user278859

如何向nsdate添加时间间隔?

  •  6
  • user278859  · 技术社区  · 16 年前

    我有一个 NSDate 以及持续时间。我需要得到时间

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

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

    我想 dateWithTimeIntervalSinceReferenceDate: ,会成功的,但我现在看到,这给出了一个日期与2001年1月1日格林尼治标准时间的偏移量。

    还有其他C函数需要使用吗

    5 回复  |  直到 9 年前
        1
  •  32
  •   Chip Coons    16 年前

    正如DyingCactus所说,您可以使用nsdate的addTimeInterval方法,但根据操作系统版本的不同,它将创建一个编译器警告,因为从2009-08-17起10.6中已弃用它。

    当前建议的方法是在nsdate上使用datebayAddingTimeInterval:

    NSDate *newDate = [oldDate dateByAddingTimeInterval:3600];
    

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

        2
  •  4
  •   Abizern    16 年前

    你想要类方法 dateWithTimeInterval:sinceDate: 开始日期和间隔 NSDate docs

        3
  •  3
  •   user121301    16 年前

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

    NSDate *newDate = [oldDate addTimeInterval:3600];
    

    编辑:正如Chip Coons正确指出的那样,这种方法已经被否决了。请改用其他方法之一。

        4
  •  1
  •   dannrob    9 年前

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

    let newDate = Date.init(timeInterval: 2600, since: oldDate)
    
        5
  •  0
  •   David    11 年前

    您可以通过添加nsdate的TimeInterval实例方法来使用更新的日期,而不是使用不推荐使用的addTimeInterval方法。

    NSDate *newDate = [oldDate dateByAddingTimeInterval:2500];