Pregunta

Estoy esperando 2010-10-11 00:00:00

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

Yo sé, que puedo añadir unas pocas horas y recibir la fecha deseada, pero yo no entiendo por qué me da día anterior con 21 horas ...

Por favor, 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];
¿Fue útil?

Solución

Creo que su problema puede ser resuelto mediante el establecimiento de la NSTimeZone.

Otros consejos

Si necesita un formato de uso de tiempo específico que formateador o escribir otra cosa 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 utilizar el siguiente código como ...

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

o necesita

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top