2010-02-24 99 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)