NSDateComponentsFormatter è ciò che desideri. Potrebbe non produrre esattamente quello che stai cercando, ma la mia impressione è che mira a produrre un output conforme alle convenzioni standard ICU. Ad esempio, si consideri questo:
NSDateComponentsFormatter* dcf = [[NSDateComponentsFormatter alloc] init];
dcf.unitsStyle = NSDateComponentsFormatterUnitsStyleAbbreviated;
NSCalendar* cal = [NSCalendar calendarWithIdentifier: NSCalendarIdentifierGregorian];
cal.locale = [NSLocale localeWithLocaleIdentifier: @"es_ES"]; // Spanish locale for Spain
dcf.calendar = cal;
NSLog(@"%@", [dcf stringFromTimeInterval: 1000000]);
... che produce:
1 semana, 4 d, 13 h, 46 min, 40 s
Quindi, questo è un po 'diverso da quello del formato di esempio, ma la mia ipotesi è che da qualche parte nel profondo delle norme ICU unicode documenti, si specifica che se un intervallo ha sia settimane che secondi, si ottiene "semana" per settimane invece di "s". Non ho intenzione di torturarmi cercando comunque di trovare quel documento.
Quindi, se stai cercando la soluzione ICU, è proprio così. Se stai cercando qualcosa di diverso, potresti bloccarti da solo. Nota anche che ci sono alcuni "stili di unità" diversi, quindi potresti provare anche gli altri e scegliere quello più adatto alla tua situazione.
Intendi per locale che in spagnolo il risultato sarebbe il seguente: ** 1s 3d 4h 15m 21s **? Nota: (semana = settimana, dia = giorno, minuto = minuto, Segundo = secondo) –
sì, esattamente. Simile a come 'NSDateFormatter' userebbe anche i formati e il linguaggio localizzati. – tenfour
È sempre possibile costruire la stringa con le variabili di sostituzione e [utilizzare le operazioni standard "stringa localizzata"] (http://stackoverflow.com/a/14984616/581994) per tradurre secondo necessità. –