2015-01-29 15 views
7

Tôi muốn chuyển đổi một NSTimeInterval sang một định dạng nhưChuyển đổi NSTimeInterval thành chuỗi theo định dạng "1w 3d 4h 15m 21s", địa phương thân thiện?

1w 3d 21s 4h 15m

Làm thế nào tôi có thể đạt được điều này một cách locale-thân thiện? Có một API cacao để làm điều này, hoặc ít nhất là có một cách để có được "w", "d", "h", "m", "s" trong miền địa phương của người dùng?

+0

Ý 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) –

+0

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

+0

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. –

Trả lời

11

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.

+0

Không phải NSDateComponentsFormatter mặc định là miền địa phương hiện tại của thiết bị? –

+0

Giá trị mặc định là ngôn ngữ hiện tại, nhưng bạn có thể ghi đè nó, như tôi đã hiển thị trong mã trong câu trả lời của tôi. – ipmcc

Các vấn đề liên quan