2011-03-26 91 views
10

我對這個很困惑。如何在當前時間添加時間

我想抓取當前時間比根據條件我想添加所需時間到當前時間。例如, 。

current time = 06:47:10 
//or should i hv to change this format to "2011-03-26 06:47:10 GMT" 

if(a= 1 and b= min) 
    { //add 1 min to 
    current time 
    } 
    else if(a= 1 and b= hour) 
    { //add 1 
    hour to current time 
    } 
else if(a= 1 and b=week) 
{ //add 1 
week to current time 
} 

只需要將上述條件的輸出添加到當前時間。

請指導我這個。

Regards

+0

請再檢查一下這個答案 http://stackoverflow.com/questions/11019709/add-90-min-to-nsdate/29542106#29542106 – 2015-04-09 15:04:49

回答

19

你是指現在的時間嗎?

如果是這樣,這會爲你做它:

NSDate *now = [NSDate date]; // Grab current time 
NSDate *newDate = [now addTimeInterval:XXX] // Add XXX seconds to *now 

其中XXX爲秒的時間。

+0

感謝rog ..是的,我的意思是,現在的時間和現在一樣。但我怎麼能管理,分鐘,小時,星期和月與NSDate.if我想添加1分鐘或1小時或1個月,我應該如何將它添加到當前時間。問候 – iscavengers 2011-03-26 07:00:57

+0

感謝隊友......它的完成......工作精湛..... – iscavengers 2011-03-26 07:33:14

+0

@ shishir.boddy無後顧之憂:) – Rog 2011-03-26 07:33:53

14

你不應該使用#define kOneDay 86400

在有夏令時區,每年有一天,只有具有82800秒,有一天有90000秒。
有時甚至有一天有86401秒。 (但我認爲閏秒也被NSDateComponents忽略了。)

如果你想做正確的話,你應該使用NSDateComponents。

添加有一天你像這樣使用:

NSDateComponents *offset = [[[NSDateComponents alloc] init] autorelease]; 
[offset setDay:1]; 
NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:offset toDate:date options:0]; 

它使用setDay:1,而不是setHour:24是非常重要的。


添加2周和3小時就可以使用這個

NSDateComponents *offset = [[[NSDateComponents alloc] init] autorelease]; 
[offset setWeek:2]; 
[offset setHour:3]; 
NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:offset toDate:date options:0]; 

你應該明白我的意思。從最大的變化單位開始,按照最小的方式工作。

是的,這是一個比addTimeInterval:多一點工作,但如果你關心幾天,幾周和幾個月,addTimeInterval:hours*60*60是錯誤的。

+0

謝謝你......讓我試試.... – iscavengers 2011-03-26 11:22:52

1
'addTimeInterval:' is deprecated 

你可以使用這個現在

mydate=[NSDate date];  
mydate = [mydate dateByAddingTimeInterval:XXX]; //XXX in seconds 
0

斯威夫特版本:

let now = NSDate().timeIntervalSince1970 // current time 
let timeAfterXInterval = NSDate().dateByAddingTimeInterval(XXX).timeIntervalSince1970 // time after x sec 

XXX是時間秒