NSDateComponentsFormatter jest tym, czego potrzebujesz. Może nie produkować dokładnie tego, czego szukasz, ale mam wrażenie, że ma on na celu uzyskanie wyników zgodnych ze standardowymi konwencjami ICU. Rozważmy na przykład w ten sposób:
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]);
... która produkuje:
1 semana, 4 d, 13 h, 46 min, 40 s
Tak, to jest trochę inaczej niż np formacie, ale wydaje mi się, że gdzieś głęboko w normach ICU unicode dokumenty, jest określone, że jeśli przerwa ma zarówno tygodnie, jak i sekundy, otrzymujesz "semana" na tygodnie zamiast "s". Nie zamierzam jednak torturować się, próbując znaleźć ten dokument.
Więc jeśli szukasz rozwiązania ICU, to jest to. Jeśli szukasz czegoś innego, możesz utknąć w swoim własnym. Zwróć też uwagę, że istnieje kilka różnych "stylów jednostek", więc możesz spróbować także innych i wybrać ten, który najlepiej pasuje do Twojej sytuacji.
Czy masz na myśli, że w języku hiszpańskim wynik jest następujący: ** 1s 3d 4h 15m 21s **? Uwaga: (semana = tydzień, dia = dzień, minuto = minuta, Segundo = sekunda) –
tak, dokładnie. Podobnie do tego, w jaki sposób 'NSDateFormatter' używałby również zlokalizowanych formatów i języka. – tenfour
Zawsze można skonstruować ciąg ze zmiennymi zastępczymi i [użyć standardowych operacji "zlokalizowanych ciągów znaków"] (http://stackoverflow.com/a/14984616/581994) do tłumaczenia w razie potrzeby. –