NSDateComponentsFormatter là những gì bạn muốn. Nó có thể không sản xuất chính xác những gì bạn đang tìm kiếm, nhưng ấn tượng của tôi là nó nhằm tạo ra sản lượng phù hợp với các quy ước tiêu chuẩn của ICU. Ví dụ, hãy xem xét điều này:
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]);
... trong đó sản xuất:
1 semana, 4 d, 13 h, 46 min, 40 s
Vì vậy, đây là một chút khác biệt so với định dạng ví dụ của bạn, nhưng tôi đoán là ở đâu đó sâu trong các tiêu chuẩn ICU unicode tài liệu, nó được xác định rằng nếu một khoảng thời gian có cả hai tuần và giây, bạn sẽ nhận được "semana" trong tuần thay vì "s". Tôi sẽ không tự tra tấn bản thân mình để tìm tài liệu đó.
Vì vậy, nếu bạn đang tìm kiếm giải pháp ICU, đây là nó. Nếu bạn đang tìm kiếm một cái gì đó khác nhau, bạn có thể bị mắc kẹt lăn của riêng bạn. Cũng lưu ý rằng có một vài "phong cách đơn vị" khác nhau để bạn có thể thử những người khác cũng như chọn một kiểu phù hợp nhất với tình huống của bạn.
Ý của bạn là do ngôn ngữ thân thiện với tiếng Tây Ban Nha, kết quả sẽ như sau: ** 1s 3d 4h 15m 21s **? Lưu ý: (semana = tuần, dia = ngày, minuto = phút, Segundo = giây) –
có, chính xác. Tương tự như cách 'NSDateFormatter' cũng sẽ sử dụng các định dạng và ngôn ngữ được bản địa hóa. – tenfour
Bạn luôn có thể tạo chuỗi bằng các biến thay thế và [sử dụng các hoạt động "chuỗi địa phương" tiêu chuẩn] (http://stackoverflow.com/a/14984616/581994) để dịch khi cần thiết. –