Pregunta

Estoy luchando con una situación extraña: el mismo código funciona diferente en dos proyectos diferentes.El único proyecto es una utilidad de línea de comandos vacía con este código.El segundo proyecto está vinculado a la biblioteca gdata-aimc-client.

Aquí está el código:

static NSString * const dateFormat = @"MM/dd/yyyy HH:mm:ss Z";
NSString *tmp_string = @"03/08/2011 10:07:36 +0300";

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease] ;    
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateFormat: dateFormat ];

NSDate *newDate = [dateFormatter dateFromString: tmp_string];
NSLog(@"dateFromThatString: %@", newDate);

En la utilidad de línea de comandos, el resultado es el mismo

"08/03/2011 10:07:36 +0300"

.

Pero en el proyecto con gdata-aimc-client vinculado, el resultado se cambia a

"08/03/2011 07:07:36 +0000"

No encuentro cuál es el problema, ¿alguna sugerencia?

¿Fue útil?

Solución

Al leer sobre este tema, aprendí que "NSDate no conoce las zonas horarias, siempre almacena las fechas de manera independiente de la zona horaria (como un lapso de tiempo desde una fecha de referencia específica)", por lo que esos dos objetos NSDaterepresentar dos cadenas diferentes en dos proyectos diferentes son iguales, solo hay algún problema en la diferencia entre la descripción de los objetos NSDate, así que ... no es un gran problema para el trabajo futuro, porque necesitaba estas descripciones solo para una depuración fácil.Simplemente no usaré el método de descripción, sino [NSFormatted stringFromDate:].

Es interesante cómo gdata-aimc-client influyó en un proyecto, esa descripción de nsdate obj devuelve al mismo tiempo, pero respondiendo a +0000 gmt offset.

Pero es solo para discusión.

Otros consejos

Parece que el formateador de fechas tiene diferentes zonas horarias en cada caso.Puede cambiar la zona horaria usando -[NSDateFormatter setTimeZone:] .

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