2011-07-17 10 views
25

¿Cómo puedo convertir la siguiente fecha "Dom Jul 17 07:48:34 +0000 2011" al siguiente formato "2011-07-17 07:48:34"?Convirtiendo un formato de fecha en el objetivo C

He utilizado NSDateFormatter como se muestra a continuación, pero no funcionó. Da null como resultado.

NSDateFormatter *objDateFormatter = [[NSDateFormatter alloc] init]; 
[objDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
[objDateFormatter dateFromString:sDate]; 
+0

¿Puede agregar la co de usted utilizado con NSDateFormatter? –

+0

[formato NSDate en iOS 4.1] (http://stackoverflow.com/questions/3716384/nsdate-format-in-ios-4-1) –

+1

posible duplicado de [iPhone: convertir cadena de fecha en una marca de tiempo relativa] (http://stackoverflow.com/questions/902950/iphone-convert-date-string-to-a-relative-time-stamp) – Ayaz

Respuesta

2

Si SDATE es la cadena que está en el formato de "Dom Jul 17 de 2011 07:48:34 +0000", usted tiene que convertir eso en una NSDate. Luego, puede usar un segundo NSDateFormatter para convertir esta fecha en su formato deseado "aaaa-MM-dd HH: mm: ss".

Si necesita averiguar la cadena necesaria para convertir, este sitio tiene una gran referencia: http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns

por ejemplo, "Sun 17 Jul 2011 07:48:34 +0000" se puede analizar con

[dateFormatter setDateFormat:@"EEE MMM d HH:mm:ss ZZZ yyyy"]; 

como un poco de asesoramiento, fechas no estándar como "may" (debería ser de julio) puede hacer que los problemas aquí. Es más rápido simplemente convertir las partes necesarias en C simple, con strftime(). Véase la referencia: http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/index.jsp?topic=/com.ibm.etools.iseries.langref.doc/rzan5mst263.htm

continuación, puede convertir la marca de tiempo Unix de vuelta en un NSDate con

[NSDate dateWithTimeIntervalSince1970:] 

Usando C para el análisis de fecha/hora suele ser hasta 10 veces más rápido. NSDateFormatter es un perro lento.

+0

buen enlace con los patrones de formato de fecha - muy útil – gbk

59

Ya tiene su formato de fecha incorrecta para el estilo de fecha que está pasando en Aquí es un documento que explica los diferentes modificadores:. Date Format Patterns

para analizar la fecha "Sun 17 jul 07:48:34 + 0000 2011" , que había necesidad de un formato de este modo:

[dateFormat setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"]; 

para entrar en el siguiente formato: '2011-07-17 07:48:34', aquí está el código completo:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"]; 
NSDate *date = [dateFormatter dateFromString:sDate]; 

// Convert to new Date Format 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSString *newDate = [dateFormatter stringFromDate:date]; 
+0

gracias :) – farajnew

+0

Un problema. .. funciona bien en el simulador, pero no funciona en el dispositivo real? – farajnew

+0

¿Qué problema tienes en el dispositivo? ¿Da un error? ¿Choque? Necesita describir su problema ... –