如何在当前时间添加时间

时间:2011-03-26 06:55:25

标签: iphone xcode ios datetime

我很担心这个。

我想抓住当前时间,而不是根据条件,我想将所需时间添加到当前时间。 例如。

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  
 }

只需将上述条件的输出添加到当前时间。

请指导我。

此致

4 个答案:

答案 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是秒的时间