2010-12-01 13 views
5

estoy esperando 2010-10-11 00:00:00¿Por qué la fecha dateFromComponents de NSCalendar devuelve una fecha incorrecta?

Pero en vez recibo 2010-10-10 21:00:00 +0000

Sé que puedo añadir unas pocas horas y recibir la fecha deseada, pero no entiendo por qué obtengo el día anterior con 21 horas ...

¡Ayuda!

NSDateComponents *comps = [[NSDateComponents alloc] init]; 
[comps setYear:2010]; 
[comps setMonth:10]; 
[comps setDay:11]; 

[comps setHour:0]; 
[comps setMinute:0]; 
[comps setSecond:0]; 

NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDate *retDate = [cal dateFromComponents:comps]; 

Respuesta

15

Creo que su problema se puede resolver configurando NSTimeZone.

+3

sí, tiene usted razón! \t [cal setTimeZone: [NSTimeZone timeZoneWithAbbreviation: @ "GMT"]]; Resolvió el problema –

+0

hmmm ... coool ... :) – KingofBliss

0

Si necesita un formato de hora específico, use ese formateador o escriba esto para obtener la hora correcta. primera opción ...

let formatter = NSDateFormatter() 
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
    let localDate = formatter.dateFromString("1989-10-17T05:00:00.000-0000") 

o si necesita la fecha a partir de componentes usar el siguiente código como ...

let calendar = NSCalendar.currentCalendar() 
    calendar.timeZone = NSTimeZone(name: "GMT")! 
    let date = calendar.dateFromComponents(components) 

o necesita

Cuestiones relacionadas