2010-01-04 19 views
10

¿Existe una manera fácil de convertir la marca de tiempo que obtienes de twitter en tiempo Unix o minutos desde ahora? Podría analizar el hilo y convertir todo yo mismo, pero espero que haya una forma de convertir que no necesite eso. Aquí hay un ejemplo de un elemento created_at con una marca de tiempo.iPhone + Twitter API: ¿Convertir tiempo?

Dom Mar 18 06:42:26 +0000 2007

Respuesta

22

Usted puede utilizar NSDateFormatter con algo como esto:


NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
[dateFormatter setLocale:usLocale]; 
[usLocale release]; 
[dateFormatter setDateStyle:NSDateFormatterLongStyle]; 
[dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; 

// see http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns 
[dateFormatter setDateFormat: @"EEE MMM dd HH:mm:ss Z yyyy"]; 

NSDate *date = [dateFormatter dateFromString:[currentDict objectForKey:@"created_at"]]; 
[dateFormatter release]; 

NSTimeInterval seconds = [date timeIntervalSince1970]; 
+0

¡Gracias, funciona a la perfección! – self

+2

¡Esto también está parcialmente mal también! La creación de un objeto NSDateFormatter es bastante pesada, por lo tanto, conviértalo en estático o conviértalo en un ivar siempre que sea posible. –

0

Presentar una solicitud de función con Apple y hacerles saber que desea esta funcionalidad en el iPhone. NSDateFormatter proporciona un método de inicio heredado que toma un indicador booleano que indica que desea que analice el lenguaje natural, pero solo está disponible en OS X. Wil Shipley escribió hace un tiempo interesting post acerca de esta funcionalidad en el contexto de factores heurísticos y humanos.

No parece probable que Apple va a proporcionar esta funcionalidad ya que esto indicaría nota de la NSDateFormatter docs:

iPhone OS Nota: iPhone OS soporta sólo el comportamiento 10.4+. 10.0-style métodos y cadenas de formato no son disponibles en iPhone OS.

En otras palabras, creo que tendrá que analizarlo usted mismo.

2

He estado strugeling con esto todo el día, pero este tema me ayudó a encontrar una solución.

Así es como convierto el atributo "created_at" de Twitter a un NSDATE;

NSDateFormatter *fromTwitter = [[NSDateFormatter alloc] init]; 
// here we set the DateFormat - note the quotes around +0000 
[fromTwitter setDateFormat:@"EEE MMM dd HH:mm:ss '+0000' yyyy"]; 
// We need to set the locale to english - since the day- and month-names are in english 
[fromTwitter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en-US"]]; 

NSString *dateString = [item objectForKey:@"created_at"]; 
NSDate *tweetedDate = [fromTwitter dateFromString:dateString]; 

Espero que alguien lo encuentre útil.

+0

ZOMG ¡gracias, funciona! Se encontraron otros 5 formatos que no funcionaron. La clave parece ser el lugar que todos los demás parecen haber perdido. –