La data in cui torni da Twitter è in questo formato Fri Aug 07 12:40:04 +0000 2009
. Sono in grado di assegnare il valore a un NSDate senza problemi. Tuttavia, quando cerco di utilizzare NSDateFormatter, mi viene restituito un zero. Cosa mi manca?Come posso impostare una stringa di data da Twitter a un NSDATE
risposta
Se l'oggetto associato alla chiave @ "created_at" è un oggetto NSDate valido, questo codice dovrebbe funzionare.
Tuttavia, suppongo che in realtà sia un NSString. Se è così, produrrà il comportamento che stai descrivendo.
Se ho ragione, il frammento di codice qui sopra assegna un oggetto NSString a un riferimento NSDate. NSDictionary restituisce gli oggetti 'id' non tipizzati, quindi il compilatore non ti darà un avviso di mancata corrispondenza di tipo.
È necessario utilizzare NSDateFormatter per analizzare la stringa in un NSDate (vedere dateFromString :).
Prima di tutto, a cosa serve stringFromDate:
? Questo è se hai già un NSDate e vuoi creare una stringa per rappresentarlo.
Inoltre, quando si utilizza il programma di formattazione della data, si fornisce una stringa di formato che non corrisponde alla stringa di data che si sta tentando di interpretare.
Modificare la stringa di formato in modo che corrisponda alle stringhe di data e utilizzare dateFromString:
anziché stringFromDate:
(con le modifiche di operatore alle dichiarazioni di variabile) e dovrebbe funzionare.
Ho avuto la stessa domanda e non ho potuto risolverlo con le risposte sopra citate. ecco cosa ha funzionato per me:
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
//Wed Dec 01 17:08:03 +0000 2010
[df setDateFormat:@"eee, dd MMM yyyy HH:mm:ss ZZZZ"];
NSDate *date = [df dateFromString:[[tweets objectAtIndex: storyIndex] objectForKey: TWITTER_CREATED_AT_JSON_KEY]];
[df setDateFormat:@"eee MMM dd yyyy"];
NSString *dateStr = [df stringFromDate:date];
dove tweets
è un NSMutableArray
riempito con NSDictionary
oggetti, storyIndex
essendo il valore di riga int (in tableView), e TWITTER_CREATED_AT_JSON_KEY
essendo una costante NSString
con valore created_at
. utilizzare dateStr
ovunque si desideri visualizzare la data
Sembra simile, Twitter cambia il formato ancora e ancora. Questi lavori per me ora. Non dimenticare di impostare la locale.
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
//Mon, 29 Oct 2012 12:24:50 +0000
[df setDateFormat:@"EEE, dd LLL yyyy HH:mm:ss ZZZ"];
[df setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];
NSDate *date = [df dateFromString:[element valueForKey:@"created_at"]];
[df setDateFormat:@"yyyy-MM-dd HH:mm"];
NSString *dateStr = [df stringFromDate:date];
[element valueForKey:@"created_at"]
- data da Twitter
Sopra niente ha funzionato per me - Prova questo per Twitter: (Ho anche incluso un bel nsdate category per una migliore mostra la data
lbl = (UILabel *)[cell viewWithTag:16];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
//"created_at": "Tue Jul 09 07:45:01 +0000 2013",
[df setDateFormat:@"EEE MMM d HH:mm:ss ZZZZ yyyy"];
NSTimeInterval timeIntveral = [[df dateFromString:[[_twitterArray objectAtIndex:indexPath.row] objectForKey:@"created_at"]] timeIntervalSince1970];
NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:timeIntveral];
//will work if you added the nsdate category, linked above
NSString *ago = [date timeAgo];
NSLog(@"Output is: \"%@\" %.f", ago,timeIntveral);
lbl.text = ago;
Spero che questo aiuti !
Grazie @binnyb. Twitter ha modificato il formato ora "Mer, 28 dic 2011 16:48:59 +0000", quindi il primo formato dovrebbe essere: [df setDateFormat: @ "eee, dd MMM y yyy HH: mm: ss ZZZZ "]. – Motasim
grazie ho apportato la modifica – binnyb
Sembra che Twitter abbia cambiato di nuovo il formato, in '@" eee MMM dd HH: mm: ss ZZZZ yyyy "' (o 'Tue Feb 08 15:54:03 +0000 2011') – lxt