2011-03-26 29 views
10

Estoy bastante confundido acerca de este.cómo agregar tiempo en el tiempo actual

Quiero capturar, la hora actual, que según la condición, quiero agregar el tiempo requerido, a la hora actual. por ejemplo.

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 
} 

Solo necesita agregar la salida de la condición anterior a la hora actual.

Por favor, guíame con esto.

Saludos

+0

favor chech esta respuesta http://stackoverflow.com/questions/11019709/add-90-min-to-nsdate/29542106#29542106 –

Respuesta

19

Qué quiere decir la hora actual, como en ahora?

Si es así, esto lo hará por usted:

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

donde XXX es el tiempo en segundos.

+0

gracias rog .. sí, quiero decir, hora actual como en ahora.pero ¿cómo puedo administrar, min, horas, semana y mes con NSDate? si quiero agregar 1 minuto o 1 hora o 1 mes, ¿cómo debo agregarlo a la hora actual? saludos – iscavengers

+0

Gracias amigo ... está hecho ... trabajando excelente ..... – iscavengers

+0

@ shishir.boddy No se preocupe :) – Rog

14

No use #define kOneDay 86400

En las zonas horarias que tienen horario de verano, cada año hay un día que sólo tiene 82800 segundos, y un día que tiene 90000 segundos.
Y a veces incluso hay un día que tiene 86401 segundos. (Pero creo que el segundo intercalar también es ignorado por NSDateComponents).

Si quieres hacerlo bien, debes usar NSDateComponents.

añadir un día se utiliza de esta manera:

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

es importante utilizar setDay:1 y no setHour:24.


añadir dos semanas y tres horas que usarían esta

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

Debe hacerse una idea. Comience con la unidad de cambio más grande y avance hasta lo más pequeño.

Sí, es un poco más de trabajo que addTimeInterval: pero addTimeInterval:hours*60*60 es incorrecto si le importan días, semanas y meses.

+0

gracias hombre ... déjame probar ... – iscavengers

1
'addTimeInterval:' is deprecated 

Puede utilizar esta ahora

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

versión Swift:

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

XXX es el tiempo en segundos

Cuestiones relacionadas