2011-01-13 21 views
5

He estado trabajando en mi cerebro sin suerte. Podría alguien por favor dígame cómo me gustaría convertir esta cadena:¿Cómo convertir un NSString en NSDate?

"2011-01-13T17: 00: 00 + 11: 00"

en un NSDate?

+1

mira esto: http://stackoverflow.com/questions/1353081/nsstring-to-nsdate – lms

Respuesta

20

El Unicode formato de fecha Doc es here

Además, por su situación, usted podría intentar esto:

// original string 
NSString *str = [NSString stringWithFormat:@"2011-01-13T17:00:00+11:00"]; 

// convert to date 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
// ignore +11 and use timezone name instead of seconds from gmt 
[dateFormat setDateFormat:@"YYYY-MM-dd'T'HH:mm:ss'+11:00'"]; 
[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"Australia/Melbourne"]]; 
NSDate *dte = [dateFormat dateFromString:str]; 
NSLog(@"Date: %@", dte); 

// back to string 
NSDateFormatter *dateFormat2 = [[NSDateFormatter alloc] init]; 
[dateFormat2 setDateFormat:@"YYYY-MM-dd'T'HH:mm:ssZZZ"]; 
[dateFormat2 setTimeZone:[NSTimeZone timeZoneWithName:@"Australia/Melbourne"]]; 
NSString *dateString = [dateFormat2 stringFromDate:dte]; 
NSLog(@"DateString: %@", dateString); 

[dateFormat release]; 
    [dateFormat2 release]; 

Esperanza esto ayuda.

+0

Gracias, esto es perfecto. La zona horaria en comillas simples no se esperaba, pero fue lo que lo solucionó :) – jennas

+0

no pudo deducir que 'T' en el medio. Entonces eso ayudó. ¡Gracias! – user1244109

1

¿Usted intentó esta

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSDate *dateT = [dateFormatter dateFromString:str]; 

Saludos

+0

Hola, sí tengo este NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; NSDate * dateT = [dateFormatter dateFromString: @ "2011-01-13T17: 00: 00 + 11: 00"]; NSLog (@ "date From string:% @", dateT); Esto devuelve (nulo) – jennas

+0

Esto le ayudará a http://stackoverflow.com/questions/4655199/how-to-set-date-format-retrieved-from-uidatepicker/4655297#4655297 – Aditya

+0

Esto está mal, no funciona en absoluto, da fecha nula. –

3

poner la parte T entre comillas simples, y comprobar los documentos Unicode para el formato exacto. En mi caso, tengo algo similar, que hago esto:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
     [dateFormat setDateFormat:@"YYYY-MM-dd'T'HH:mm:ss.SSS"]; 

De nuevo, no es exactamente lo mismo, pero se entiende la idea. Además, tenga cuidado con las zonas horarias al convertir ida y vuelta entre cadenas y ndadas.

Una vez más, en mi caso, utilizo:

[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"America/New_York"]]; 
+0

Hola, configuro [NSTimeZone systemTimeZone] que es la zona correcta. ¡Lo siguiente sigue arrojando una maldita cosa nula![dateFormatter setDateFormat: @ "aaaa-MM-dd'T'hh: mm: ssSSS"]; – jennas

+0

Eso fue para mi código, necesitarás hacer algo similar para tu código. De nuevo, verifique los documentos de UNICODE. – tbone

0

Puede visitar TouchTime.

https://github.com/jheising/TouchTime.

Es un puerto directo de la increíble función strtotime en PHP en 5.4 para Cocoa e iOS. Adoptará casi cualquier formato arbitrario de cadena de fecha u hora y lo convertirá en un NSDate.

¡Espero que funcione, y disfruta!

0

Pruebe utilizar este proyecto habilitado para cocoapods. Hay muchas funciones adicionales que probablemente serán necesarias también.

"Una categoría para extender la clase NSDate de Cocoa con algunas funciones de conveniencia."

https://github.com/billymeltdown/nsdate-helper

He aquí un ejemplo de su página:

NSDate *date = [NSDate dateFromString:@"2009-03-01 12:15:23"]; 
+0

Además, la mayoría busca ahora utilidades en cocoapods. Aquí está la consulta sobre NSDate. http://cocoapods.org/?q=NSDate –