Как добавить время в текущее время

Я очень смущен этим.

Я хочу захватить текущее время, чем в соответствии с условием, я хочу добавить требуемое время к текущему времени. например.

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  
 }

Просто добавьте вывод вышеуказанного условия в текущее время.

Прошу вас поучаствовать в этом.

Привет

Ответ 1

Вы имеете в виду текущее время, как сейчас?

Если это так, это сделает это за вас:

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

Где XXX - это время в секундах.

Ответ 2

Нельзя использовать #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 ошибочно, если вам нужны дни, недели и месяцы.

Ответ 3

'addTimeInterval:' is deprecated

Вы можете использовать это сейчас

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

Ответ 4

Быстрая версия:

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

XXX - это время в секундах