我很担心这个。
我想抓住当前时间,而不是根据条件,我想将所需时间添加到当前时间。 例如。
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
}
只需将上述条件的输出添加到当前时间。
请指导我。
此致
答案 0 :(得分:19)
你的意思是现在的时间,就像现在一样吗?
如果是这样,这将为您完成:
NSDate *now = [NSDate date]; // Grab current time
NSDate *newDate = [now addTimeInterval:XXX] // Add XXX seconds to *now
其中XXX是以秒为单位的时间。
答案 1 :(得分: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
非常重要。
要添加两周和三小时,您将使用此
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
是错误的。
答案 2 :(得分:1)
'addTimeInterval:' is deprecated
您现在可以使用
mydate=[NSDate date];
mydate = [mydate dateByAddingTimeInterval:XXX]; //XXX in seconds
答案 3 :(得分:0)
Swift版本:
let now = NSDate().timeIntervalSince1970 // current time
let timeAfterXInterval = NSDate().dateByAddingTimeInterval(XXX).timeIntervalSince1970 // time after x sec
XXX是秒的时间