2010-02-24 96 views
6

我有一个NSDate和持续时间。我需要时间如何将时间间隔添加到NSDate?

考虑后得到的时间:
日期是“2010-02-24 12:30:00 -1000”
持续时间为3600秒

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

我认为dateWithTimeIntervalSinceReferenceDate:,会做的伎俩,但我现在看到,这给出了从2001年1月1日格林尼治标准时间的日期偏移量。

难道还有其他的C函数,我需要使用

回答

31

由于DyingCactus声明,您可以使用NSDate的addTimeInterval方法,但取决于操作系统版本,将会创建一个编译器警告,因为它在2009年10月10日之前不推荐使用10.6。

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

NSDate *newDate = [oldDate dateByAddingTimeInterval:3600]; 

请注意,如果你的目标10.5或更早的版本,原来的答案会工作。

+0

感谢所有回答。我没有在这篇文章中阅读好文档。 – user278859 2010-02-24 22:59:19

4

你想要的类方法dateWithTimeInterval:sinceDate:这需要的起始日期和间隔NSDate docs

+0

我找不到dateWithTimeInterval:sinceDate,但现在你让我再看看我确实看到initWithTimeInterval:sinceDate :.那就是诀窍。谢谢。 – user278859 2010-02-24 22:57:42

+0

'dateWithTimeInterval:sinceDate'是一个类方法,而不是一个实例方法,它将结果作为自动发布的NSDate返回。您最终习惯了命名约定。 – Abizern 2010-02-25 01:01:21

+0

好的,我明白了为什么我看不到dateWithTimeIntervalSinceDate。您的链接是到Mac OSX Reference Library。它不适用于iPhone。 但正如其他人指出的,还有其他几种方法可以在iPhone上使用它。 – user278859 2010-02-25 02:11:21

3

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

NSDate *newDate = [oldDate addTimeInterval:3600]; 

编辑:由于芯片库恩正确指出,这种方法已被弃用。请改用其他方法之一。

0

除了使用不推荐使用的addTimeInterval方法,还可以使用NSDate的更新的dateByAddingTimeInterval实例方法。

NSDate *newDate = [oldDate dateByAddingTimeInterval:2500]; 
1

对于那些寻找一个斯威夫特3.x版:

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