2015-01-29 13 views
7
Ben

NSTimeInterval, "1w 3d 4h 15m 21s" biçiminde dizgeye dönüştürür, yerel ayarlara uygun mu?

1w 3d 4h 15m 21s gibi bir biçime bir NSTimeInterval dönüştürmek istediğiniz

nasıl yerel dostu bir şekilde bunu başarabilirsiniz? Bunu yapmak için bir kakao API'sı var mı, yoksa en azından kullanıcının bulunduğu yerdeki "w", "d", "h", "m", "s" yi almanın bir yolu var mı?

+0

Yerele göre arkadaş canlısı kelimelere göre İspanyolca'da şöyle bir sonuç çıkacaktır: ** 1s 3d 4h 15m 21s **? Not: (semana = hafta, dia = gün, minuto = dakika, Segundo = saniye) –

+0

evet, tam olarak. NSDateFormatter'ın yerelleştirilmiş biçimleri ve dili nasıl kullanacağı gibi. – tenfour

+0

Dizgiyi her zaman değiştirme değişkenleriyle ve [gerektiği gibi çevirmek için standart "yerelleştirilmiş dizgi" işlemlerini kullanın) (http://stackoverflow.com/a/14984616/581994) kullanabilirsiniz. –

cevap

11

NSDateComponentsFormatter istediğiniz şeydir. Tam olarak aradığınız şeyi üretmeyebilir, ancak benim izlenimim, ICU standart sözleşmelerine uygun çıktı üretmeyi amaçlamasıdır. Örneğin, bu göz önünde bulundurun: üretir

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]); 

...: Yani

1 semana, 4 d, 13 h, 46 min, 40 s 

, bu örnek formatı biraz daha farklı, ama benim tahminim bir yerde derin yoğun bakım unicode standartlarında Belgeler, bir aralıkta hem haftalar hem de saniyeler varsa, "s" yerine haftalar için "semana" aldığınız belirtilir. Bu belgeyi bulmaya çalışırken kendime işkence yapmayacağım.

Eğer ICU çözümünü arıyorsanız, işte budur. Farklı bir şey arıyorsanız, kendi yuvarlanmanız halinde sıkışmış olabilirsiniz. Ayrıca, birkaç farklı "birim stili" bulunduğunu ve başkalarını da deneyebileceğinizi ve durumunuza en uygun olanı seçebileceğinizi unutmayın.

+0

NSDateComponentsFormatter, aygıtın geçerli yerel ayarını varsayılan olarak ayarlamaz mı? –

+0

Geçerli yerel ayar için varsayılan değerdir, ancak cevabımda kodu gösterdiğim gibi bunu geçersiz kılabilirsiniz. – ipmcc

İlgili konular